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

  • TurkishRoyal

    TurkishRoyal

    16 Ocak 2007
  • TWiT Netcast Network

    TWiT Netcast

    27 EKİM 2005
  • WOSU Public Media

    WOSU Public

    23 AĞUSTOS 2007