无法设置NavigationItem的TintColor

时间:2015-04-30 05:40:42

标签: ios swift uinavigationitem

我的情况:

  • 有一个View_A(UICollectionViewController& UICollectionViewCell)和View_B(UIViewController)。当我在Segue中使用StoryBoard触摸View_A中的一个单元格时,我想切换到View_B。

  • StoryBoard中,我将View_A和View_B与标识为Push Segue的{​​{1}}相关联。

  • 并且switchViews的功能运行良好。

我的问题:

  • 使用SegueToView_B,我不需要添加BackButton(Push Segue)来返回View_A,因为有一个' NavigationItem'由系统自动装箱。我尝试了其他类型的segue,例如NavigationItemModal,而Popover并非自动创建。我想问为什么?

  • 我想为系统自动创建的NavigationItem设置特定颜色,而不是默认蓝色,但我找不到它。之后,我只是在NavigationItem中设置了颜色,但它没有用。请告诉我们如何设置它的特定颜色?

我的代码:

prepareForSegue()

感谢您的帮助。

Ethan Joe

2 个答案:

答案 0 :(得分:3)

为该导航栏设置tintColor

myOtherCardViewController.navigationBar.tintColor = .whiteColor()

使用Modal或PopOver时为什么没有导航栏?因为这就是Modal和Popover的工作原理!您必须为要与Modal segue连接的视图创建另一个导航控制器,如下所示: enter image description here

我使用的另一种技术是创建单个NavigationController类,并设置所有需要的属性(颜色,字体等),然后将Storyboard中的所有NavigationControllers链接到该NavigationController类。

这样你就不必重新配置每个NavigationController。

答案 1 :(得分:1)

您的解决方案

  • 您可以使用此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的子类,并将该类分配给UIStoryboard中的UINavigationController

您的子类将如下所示,以设置色调,

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
}

愿这对你有帮助!!