2012-09-25 13 views
7

iOS6'nın Minimal Deployment Target iOS 5.0'a ayarlanmış bir uygulamadaki özelliklerini nasıl destekleyebilirsiniz?Bir iOS 5 uygulamasında iOS 6 özelliklerinin koşullu desteği

Örneğin, bir kullanıcı iOS 5'e sahipse, kullanıcı iOS 6ysa iOS 6 için farklı bir UIActionSheet görecekse, bir UIActionSheet görecektir? Bunu nasıl yapıyorsun? Xcode 4.5 uygulamasına sahibim ve iOS 5 üzerinde çalışan bir uygulama istiyorum.

cevap

19

Her zaman, iOS sürümlerinden ziyade mevcut yöntemleri/öznitelikleri bulmayı ve sonra bir yöntemin var olduğunu varsaymayı tercih etmelisiniz.

Bkz. Apple documentation. , UIViewController ait presentModalViewController:animated: yöntemi kullanımdan kaldırıldı iOS 6'da

[self presentModalViewController:viewController animated:YES]; 

, iOS 6'da presentViewController:animated:completion: kullanmalıdır:

Örneğin, iOS 5'de böyle bir şey yapacağını kalıcı görünüm denetleyicisi görüntülemek için ama ne zaman kullanacağını nereden biliyorsun?

iOS sürümünü algılayabilir ve bir veya daha sonra kullandığınız bir if deyimine sahip olabilirsiniz, ancak bu hataya aykırıdır, bir hata yaparsınız, belki de gelecekte daha yeni bir işletim sisteminin bunu yapmanın yeni bir yolu olur. .

bu işlemek için doğru yoldur:

if([self respondsToSelector:@selector(presentViewController:animated:completion:)]) 
    [self presentViewController:viewController animated:YES completion:^{/* done */}]; 
else 
    [self presentModalViewController:viewController animated:YES]; 

Hatta daha sıkı olması gerektiğini iddia ve böyle bir şey yapabileceğini: Ben senin UIActionSheet Örneğin konusunda emin değilim

if([self respondsToSelector:@selector(presentViewController:animated:completion:)]) 
    [self presentViewController:viewController animated:YES completion:^{/* done */}]; 
else if([self respondsToSelector:@selector(presentViewController:animated:)]) 
    [self presentModalViewController:viewController animated:YES]; 
else 
    NSLog(@"Oooops, what system is this !!! - should never see this !"); 

, Bildiğim kadarıyla bu durum iOS 5 ve 6'da aynıdır. Belki de paylaşım için UIActivityViewController düşünürsünüz ve iOS 5 kullanıyorsanız, UIActionSheet adresine geri dönmek isteyebilirsiniz. mevcut, bkz. here nasıl yapılır.

+1

Yardımlarınız için teşekkürler! Çok büyük bir cevap! –

+0

Hakkında bir teşekkür ve about.me için teşekkür ederiz – Daniel

+0

Proje ayarlarında çerçeveye bağlayabilirsiniz, böyle bir durumda, çerçevenin tüm versiyonlarında mevcut olmayabilir, sizin durumunuzda olduğu gibi, sadece isteğe bağlı olacak şekilde daha sonra gerekli. ---- soru silindi .... soru/yorum. – Daniel