2011-11-03 107 views
2

你好我工作在iOS SDK5和Xcode 4.2,我要準備哪些應該與iOS 4.0兼容到5.0,或者至少4.3和5.0iPhone構建使用的Xcode 4.2,它支持4.0版本到5.0

構建我已基SDK設置爲5.0和部署目標〜4.0,但是當我運行在iPhone 4模擬器應用程序我的應用程序崩潰基本上是由於下面寫

 
[testNavigationBar setBackgroundImage:[UIImage imageNamed:@"facebook-navbar.png"] forBarMetrics:UIBarMetricsDefault]; 

但代碼上面的代碼運行正常時i開關從4到5 iPhone模擬器也我已經嘗試setBackgroundColor,但它不工作,如此善良幫助我。

回答

1

這是因爲-setBackgroundImage:是在iOS 5中引入的,Apple通常不會(通常)將新API作爲規則返回到舊平臺。無論如何,你有兩個選擇:

if ([testNavigationBar respondsToSelector:@selector(setBackgroundImage:)]) { 
    // do what you're currently trying 
} 
else { 
    //find a compatible way to do it 
} 

或:

//find a compatible way to do it 
2

問題是該方法被添加到iOS5,所以它不存在於iOS4。你需要做一個運行時檢查,看是否你在iOS5中,如下所示:

if ([testNavigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics)]) { 
    [testNavigationBar setBackgroundImage:[UIImage imageNamed:@"facebook-navbar.png"] forBarMetrics:UIBarMetricsDefault]; 
} 

現在的問題是,你不會得到在iOS4的後臺,所以你必須找到一個解決方法。