我的应用程序适合UINavigationController
. 只是我设置了一个MyUIViewController
as rootViewController
of ,navigationController
然后我设置了一个customTitleView
for the navigationItem
of myViewController
inside viewDidLoad
。
现在,当我按下 a 时,newViewController
我希望看到以前的内容customTitleView
(如 Apple NavigationController 参考所述),但事实并非如此。
怎么了?
下面的一小部分代码和 Apple UINavigationController 参考
“如果新的顶级视图控制器具有自定义标题视图,导航栏会显示该视图以代替默认标题视图。要指定自定义标题视图,请设置视图控制器导航项的 titleView 属性。”
- (void)viewDidLoad {
[super viewDidLoad];
[self.navigationItem setTitleView:customTitleView];
}
也许“默认标题视图”意味着“什么都没有”?我把它解释为之前的titleView。
编辑
我正在尝试解决方法,但我还有其他一些问题。解决方法是:
在我推入 NavigationController 的每个 ViewController 中,我在 viewDidLoad 中设置了 titleView 从 rootViewController 获取它
UiView *originalContainer = [[[self.navigationController.viewControllers objectAtIndex:0] navigationItem] titleView]
我创建了一个 newTitleView 并将其放入 originalContainer.subviews (UIButton) 中,因为我需要其中的 Target 操作。
对于第一个推送的控制器来说,一切都很好,但是如果我在堆栈中推送另一个 viewController(第二个推送),我会丢失对 navigationController 的所有引用。每个实例变量都是零。
这些值是在 viewDidLoad 中获取的
firstViewControllerPushed.navigationController = (UINavigationController*)0x6693da0 firstViewControllerPushed.parentViewController = (UINavigationController*)0x6693da0
secondViewControllerPushedFromFirstViewControllerPushed.navigationController = 0x0 secondViewControllerPushedFromFirstViewControllerPushed.parentViewController = 0x0
看来 secondViewControllerPushed 无处可去!
怎么可能?
我仔细检查了我是否正确推送了 viewController 而不是模态显示它
由于这个问题,我无法为 secondViewControllerPushed 正确设置 newTitleView。