无法在iOS中获取任何导航项

时间:2015-01-10 15:41:12

标签: ios swift uinavigationcontroller uinavigationbar uinavigationitem

我对导航栏有疑问。

据我所知,iOS:由segue打开的视图控制器继承了父视图控制器的导航栏。到目前为止这是正确的吗?

堆栈中的视图控制器是否“拥有”复杂segue堆栈中的导航栏(例如,打开TabBarController打开的TableViewController ......)?

我经常遇到这样的问题:我不知道在哪里可以获得实际的导航项目来设置标题或栏按钮项目。

在这种情况下,我有以下控制器:

  • TabBarController
  • EventPostsViewController - >要显示帖子列表,是TabBarController
  • 中的选项卡式视图
  • CreatePostViewController - >写一篇新帖子

所以在EventPostsViewController我可以做到这一点(并且有效):

class EventPostsViewController: UITableViewController {
    ...
    override func viewWillAppear(animated: Bool) {
        ...
        // This solution works, but only for EventPostsViewController
        self.tabBarController?.navigationItem.title = "text"

但是在CreatePostViewController内,这是由segue通过EventPostsViewController打开的,这些解决方案都不起作用。

class CreatePostViewController: UIViewController {
    ...
    override func viewWillAppear(animated: Bool) {
        ...
        // Neither of these solutions works
        self.navigationItem.title = "Text"
        self.tabBarController?.navigationItem.title = "Text"
        self.navigationController?.navigationItem.title = "Text"

如何获得实际的导航栏/ navigationItem?

1 个答案:

答案 0 :(得分:0)

愚蠢的简单错误我每次都重复:)

我忘了使用界面构建器将我的自定义CreatePostViewController与视图控制器链接。

enter image description here

此代码现在有效:

class CreatePostViewController: UIViewController {
    ...
    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated);
        self.navigationController?.setNavigationBarHidden(false, animated: false)

        // Set title
        self.navigationItem.title = "Write Post"

        // Add Submit button
        var submitButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: self, action: "submitPost:")
        self.navigationItem.rightBarButtonItem = submitButton
    }
    ...
}