2015-11-07 217 views
2

我試圖更改默認灰色Tab Bar項目,但Xcode發現錯誤。我使用了一些代碼,該代碼是:如何更改標籤欄項目的默認灰色顏色?

所以我把這個SecondViewController只是作爲試驗,當我在Xcode的模擬器上運行的應用程序會崩潰,並在日誌中顯示(控制檯)錯誤致命錯誤:意外發現零而展開的可選值

我覺得問題就在這裏:

UITabBar.appearance().selectionIndicatorImage = UIImage().makeImageWithColorAndSize(UIColor.blueColor(), size: CGSizeMake(tabBar.frame.width/CGFloat(tabBar.items!.count), tabBar.frame.height)) 

因爲當我刪除這部分代碼,錯誤不會發生。 有人可以幫我嗎?

回答

1

您的代碼中存在的問題是您創建了UITabBar對象,如let tabBar = UITabBar(),並且此對象與位於窗體上的選項卡無關。你tabBar是不包含一個UITabBarItem對象一個新的空對象,當你調用這個:

UITabBar.appearance().selectionIndicatorImage = UIImage().makeImageWithColorAndSize(UIColor.blueColor(), size: CGSizeMake(tabBar.frame.width/CGFloat(tabBar.items!.count), tabBar.frame.height)) 

當您嘗試這樣做時出現錯誤:tabBar.items!.count。您正在嘗試打開可選items數組​​並且它nil因爲tabBar是空對象且沒有項目。

要解決這個問題,你需要從當前UITabBarController獲得參考UITabBar例如像這樣:

class SecondViewController: UIViewController { 

    var tabBar: UITabBar? 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     tabBar = self.tabBarController!.tabBar 
     tabBar!.selectionIndicatorImage = UIImage().makeImageWithColorAndSize(UIColor.blueColor(), size: CGSizeMake(tabBar!.frame.width/CGFloat(tabBar!.items!.count), tabBar!.frame.height)) 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 
+0

那麼,現在又當如何? – Emm

+0

@EminEmini編輯答案 –

+0

感謝兄弟,它的工作:) – Emm

相關問題