0

我有一些代码可以正常工作:

[self.navigationController pushViewController:subView animated:YES];

要将新视图推送到UINavigationController堆栈上,但是我现在已经实现了一些重新加载视图内容然后更新标题的功能,所以我有一个这样的函数:

- (void)loadEntries:(NSString *)entriesToLoad
{
   //Loading code
   self.title = [entriesToLoad lastPathComponent];
}

此代码确实将标题设置得很好,但是它会导致UINavigationController丢失主根视图的内容。如果我注释掉该代码,它绝对可以正常工作,目前我只是在将新视图推送到视图堆栈时设置标题,并且工作正常。如果视图是子视图的子视图,则更奇怪的是(root view-> child view-> child view)它似乎将第一个子视图视为根。我不确定为什么更改标题会对导航堆栈产生如此大的影响。

4

3 回答 3

0

这里一定有一些混乱。我们谈论的是子视图(添加后将是子视图)还是子视图控制器?因为:

[self.navigationController pushViewController:subView animated:YES];

期待一个UIViewController's子类而不是一个UIView's子类。


如果你想玩子视图,你可以简单地:

[self.view addSubView:mySubView]; 

然后更改您的UINavigationController.

于 2013-07-17T16:21:57.337 回答
0

听起来它与设置标题无关,也许是您正在做的其他事情。但我更喜欢在navigationItem属性上设置标题,这样它就不会影响其他部分(例如 atabBarItem的标题。

[self.navigationItem setTitle:[entriesToLoad lastPathComponent];
于 2013-07-17T16:33:09.503 回答
0

对于任何有同样问题的人,我都找出了原因。

如果根视图没有设置标题,它通常默认Back在导航返回按钮中,但是如果您在子viewController托管视图中更改标题并且根没有设置标题,则会破坏导航逻辑。UINavigationController我不确定这是一个错误还是预期的行为,但确保根视图有一个标题解决了这个问题。

于 2013-07-25T13:13:10.023 回答