SORU
4 AĞUSTOS 2014, PAZARTESİ


UİAlertView/UİAlertController iOS 7 ve iOS 8 uyumluluğu

Hızlı bir uygulama yazmak için kullanıyorum ve bir uyarı göstermek istiyorum. Uygulama iOS 7 ve iOS 8 uyumlu olmalıdır. UIAlertView UIAlertController UIAlertController sistem sürümü kontrol etmeden varsa kontrol edebilirim? ile değiştirilmiştir beri Apple bir API olup olmadığını öğrenmek için cihazın sistem sürümünü kontrol etmeliyiz önerir bu işitme.

Bu iOS 7 ama bu çöker iOS 8 için kullanıyorum "dyld: Symbol not found: _OBJC_CLASS_$_UIAlertAction" :

let alert = UIAlertController(title: "Error", message: message, preferredStyle: .Alert)
let cancelAction = UIAlertAction(title: "OK", style: .Cancel, handler: nil)
alert.addAction(cancelAction)
presentViewController(alert, animated: true, completion: nil)

Ben iOS için UİAlertView bu uyarıyı alıyorum 8, kullanın: Warning: Attempt to dismiss from view controller <_UIAlertShimPresentingViewController: 0x7bf72d60> while a presentation or dismiss is in progress!

CEVAP
17 AĞUSTOS 2014, Pazar


Algılama desen Objective-C tarzı aynıdır.

Geçerli etkin çalışma zamanı bu sınıfın örneğini oluşturmak için yeteneğine sahip olup olmadığını belirlemek gerekir

if objc_getClass("UIAlertController") != nil {

     println("UIAlertController can be instantiated")

      //make and use a UIAlertController

 }
 else {

      println("UIAlertController can NOT be instantiated")

      //make and use a UIAlertView
}

Sakın iş bu işletim sistemi sürümüne bağlı. Yetenekleri tespit etmek gerekirDEĞİLOS.

EDİT

Bu cevap NSClassFromString("UIAlertController") orijinal dedektörü geçerli sürüme Değiştirilmiş Sürümü için çalışır kendi kurmak -O optimizasyon altında başarısız olur

2 DÜZENLEYİN

NSClassFromString Güncellemelerinden tüm iyileştirmelere 6.3/Swift 1.2 de çalışıyor

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jason Parker

    Jason Parker

    14 Aralık 2009
  • Machinima

    Machinima

    17 Ocak 2006
  • PhoneBuff

    PhoneBuff

    10 HAZİRAN 2011