2013-09-25 10 views
11

iOS 6 ve iOS 7'de çalışan bir uygulamayı Derleme:Ben iOS 6 ve iOS 7'de</p> <p>kullanılmak üzere bir iPad uygulamasının derlemeye mücadele ediyorum Burada almaya devam mesajdır

Property 'barTintColor' not found on object of type 'UITabBar *'; did you mean 'tintColor'? 

Hedef için Base SDK, Latest iOS (iOS 7.0) olarak ayarlanmıştır ve iOS Deployment Target, iOS 6.0'dur. Projede bir temizlik yaptım. .h dosyasında

: .m dosyasında

@property (nonatomic, strong) IBOutlet UITabBar *tabbedBar; 

:

if ([tabbedBar respondsToSelector: @selector(barTintColor)]) { 
    tabbedBar.barTintColor = [UIColor blackColor]; 
} 

ben karşı derleme İşte

Xcode Target Settings

kodudur iOS 7 SDK, bu yüzden barTintColor hakkında bilmeli. Sorunun ne olabileceğine dair bir fikrin var mı?

Güncel:

Tamam, ilerleme, ama oldukça neden anlayamıyorum.

Bu Xcode ekran görüntüsüne bakın. Aktif Şema seçiminde iPad 3'üm için iki girişi not edin. Fark ne? En üstteki seçeneği seçersem, hatayı alıyorum. Alt seçeneği seçersem çalışır. Aynı cihaz bu listede iki kez görünür ve ben dadiğerini seçtiğinizde neden çalıştığını neden

Xcode device selection

Herkes açıklayabilir misiniz? FYI, cihazda iOS 6 yüklü.

+0

Bu bir çalışma zamanı mı yoksa derleme hatası mı? @selector (setBarTintColor:) 'ı deneyebilir misiniz? –

+0

selector setBarTintColor ürününü denediniz mi? [TabbedBar setBarTintColor: [UIColor blackColor]] 'da olduğu gibi; – CSmith

+0

Üzgünüm, Xcode 'setBarTintColor' hakkında da bilmiyor. Bu ekran görüntüsüne bakın [link] (http://i.imgur.com/kN0Qu7N.png) – Axeva

cevap

15

Xcode'ınızda yüklü iki SDK'sınız var: iOS 6 ve iOS 7 için. Şimdi, bu durumda, iOS 7 cihazınızı takarsanız, cihaz seçicisinde iki aygıt (seçenek) gösterir: iPad 3 (iOS 7) için ikinci sırada iPad 3 (iOS 6) için satır.

sizin hata ile sorun iPad 3 (iOS 6) seçtiğinizde, (Xcode hala iOS 7'den olarak cihazı okur (ve bu kadar yüklediği budur zaten) bu yüzden oluştururken bunun [tabbedBar respondsToSelector: @selector(barTintColor)] kodu aktarılmasıdır, seçiciye cevap veriyor, çünkü iOS 7 için kuruluyorsunuz, ama aynı zamanda bir hata yaratıyor çünkü bu yüzden, iOS 6 bu yönteme sahip değil! Eğlence. Temel olarak, iOS 7 aygıtında test ederken iOS 6 seçeneğini kullanamazsınız. Ya iOS 6 cihazına ihtiyacınız var ya da eski sürümleri test etmek için simülatörde kalıyorsunuz.

DÜZENLEME: Ne aşağıdaki şekilde dediğimi test edebilirsiniz - yerine respondsToSelector: kullanımını

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0f) { 
    // code 
} 

kullanarak ve sonra listedeki ilk cihaz seçin (iPad 3 iOS 6). if maddesinden geçtiğini görürsünüz, ancak Xcode, seçicinin iOS 6'da bulunmadığı konusunda bir hata verir.

+0

Emin değilim. Cihazın iOS 6 veya iOS 7 olup olmamasına bakılmaksızın bir ikili oluşturulmamalıdır? App Store'a veya Kurumsal Dağıtım'a gönderdiğinizde, yalnızca bir sürüm oluşturursunuz. Her SDK için bir değil. – Axeva

+0

Evet, ama sadece iPad'de koşmaktan bahsediyorum. Uygulamayı arşivlediğinizde, hem iOS 6 hem de 7'de iyi çalışır. TestFlight/HockeyApp aracılığıyla bir arşiv oluşturmayı ve dağıtmayı deneyebilirsiniz ve sorun yaşamayacaksınız. –

+2

Bu yüzden Xcode, test yaparken evrensel SDK'ları değil, belirli SDK sürümlerini derliyor mu? – Axeva

İlgili konular