无法设置 NavigationItem 的 TintColor

The NavigationItem's TintColor can not be set

我的情况:

我的问题:

我的代码:

 override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
    self.collectionView?.setPresenting(true, animated: true, completion: nil)
    let delegate = UIApplication.sharedApplication().delegate as! AppDelegate
    self.selectedCard = delegate.otherCards[indexPath.row]
    self.performSegueWithIdentifier("SegueToView_B", sender: self)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if let identifier = segue.identifier {
        if identifier == "SegueToView_B" {
            let myOtherCardViewController = segue.destinationViewController as? View_BViewController
            myOtherCardViewController!.otherCard = self.selectedCard
            myOtherCardViewController!.navigationItem.backBarButtonItem?.tintColor = UIColor.whiteColor()  // Failed to work!!!
            myOtherCardViewController?.navigationItem.leftBarButtonItem?.tintColor = UIColor.whiteColor()  // Failed to work, too!!!
        }
    }
}

感谢您的帮助。

伊桑·乔

要为该导航栏设置 tintColor

myOtherCardViewController.navigationBar.tintColor = .whiteColor()

为什么使用Modal或PopOver时没有Navigationbar?因为这就是 Modal 和 Popover 的工作方式!您必须为与模态转场连接的视图创建另一个导航控制器,如下所示:

我正在使用的另一种技术是,创建单个 NavigationController class,并设置所有需要的属性(颜色、字体等),然后 link Storyboard 中的所有 NavigationControllers NavigationController class.

有了它,您就不必重新配置每个 NavigationController。

您的解决方案

  • 您可以在 viewDidLoad 方法中设置隐藏在 View_B 控制器中的后退按钮。

    class View_BViewController: UIViewController {
    
        override func viewDidLoad() {
           super.viewDidLoad()
            self.navigationItem.hidesBackButton = true;
            // Do any additional setup after loading the view.
        } 
    } 
    
  • 要设置色调颜色,您必须创建 UINavigationController 的子 class,并将 class 分配给 UIStoryboard 中的 UINavigationController

你的子class看起来像这样,设置色调,

class navigationController: UINavigationController {

    override func viewDidLoad() {
        super.viewDidLoad()
        //self.navigationBar.barStyle = UIBarStyle.Default
        self.navigationBar.tintColor = UIColor.redColor()
        // Do any additional setup after loading the view.
    }

    //Other stuff
}

希望对您有所帮助!!