如何从Xib加载的ViewController中设置NavigationController navigationItem标题

时间:2019-07-03 20:18:30

标签: ios objective-c uinavigationcontroller

我有一个UIViewController,它从Xib文件加载视图。在我的AppDelegate.m中,我想使用myViewController初始化rootViewController,并希望通过获取NavigationBar视图(它是myViewController的Xib文件的一部分)来设置navigtionItem的标题: / p>

MyViewController *myViewController = [[MyViewController alloc] init];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:myViewController];

根据documentation

  

每次顶级视图控制器更改时,导航控制器都会相应地更新导航栏。

在我的设置中,这似乎没有发生,或者我没有指出我的NavigationBar视图实际上是要考虑的navigationBar。

如何根据NavigationBar视图(它是myViewController的Xib文件的一部分),告诉NavigationController更新其navigationItem内容(标题,左右栏按钮)?

更新

我的Xib布局如下:

Xib layout

我知道我可以通过以下方式在代码中设置这些项目:

self.navigationItem.titleView = ...;
self.navigationItem.leftBarButtonItem = ...;

但是我希望它们在ViewController的Xib文件中进行设计,并且应该在NavigationController中使用它们。

2 个答案:

答案 0 :(得分:0)

在ViewController集的ViewWillAppear方法中-

      self.navigationItem.title = @"Title name";

同样可以使用set self.navigationItem.leftBarButton和RightBarButton项目

答案 1 :(得分:0)

将UINavigationBar视图添加到主UIView并不会执行您认为的操作。它只是在视图中添加一个导航栏视图,而没有与UINavigationController绑定。

如果使用情节提要,则可以将UINavigationItem添加为public StreamWriter(Stream stream) : this(stream, encoding: UTF8NoBOM, // <==== THIS IS THE PROBLEM bufferSize: 1024, leaveOpen: false) { } 的子级。但是,由于您没有使用情节提要板,因此最简单的方法是更新UIViewController中的navigationItem


旁注:Apple不建议使用viewDidLoad来设置导航项。如果您确实想以正确的方式进行操作,例如可以在viewDidLoad吸气剂中进行操作。

navigationItem