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

  • Bigapplemagic

    Bigapplemagi

    22 EYLÜL 2011
  • Dom Esposito

    Dom Esposito

    26 Mayıs 2011
  • Kindness

    Kindness

    23 Ocak 2006