【发布时间】:2012-12-27 23:40:54
【问题描述】:
导航控制器上的后退按钮有时不会出现。请注意,有时确实如此,因此其他地方的 som 代码中可能还发生了其他事情,但我已尝试以我能想到的各种方式对其进行调试,但似乎没有任何效果。
推送视图控制器的代码如下(很标准):
CommentsTableViewController *vc = [[[CommentsTableViewController alloc] init] autorelease];
vc.puzzleID = self.puzzleModel.puzzleID;
[self.navigationController pushViewController:vc animated:YES];
为了调试这个问题,我在viewWillAppear和viewDidAppear的CommentsTableViewController中放了如下代码(除了我只注册了一次观察者):
self.navigationItem.hidesBackButton = NO;
[self.navigationItem addObserver:self forKeyPath:@"backBarButtonItem" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionInitial) context:nil];
self.navigationItem.backBarButtonItem.title = @"Tactic";
NSArray *viewControllerArray = [self.navigationController viewControllers];
int parentViewControllerIndex = [viewControllerArray count] - 2;
[[viewControllerArray objectAtIndex:parentViewControllerIndex] setTitle:@"Tactic"];
这些似乎都没有帮助。设置断点后,层次结构中我上方的视图控制器似乎有一个标题(@“Tactic”),并且 hidesBackButton 已经是 NO。 backBarButtonItem 属性为 nil 且始终为 nil,但我认为即使您确实有 backBarButtonItem,这也是预期的行为?
编辑:在父控制器中,我首先将 hidesBackBackButton 设置为 YES,然后(在我按下下一个控制器之前),将其设置回 NO。当我删除这些行时,新的视图控制器有一个后退按钮。为什么一个视图控制器的导航项会影响下一个视图控制器的导航项?
欢迎任何建议或想法。非常感谢。
【问题讨论】:
-
导航控制器是窗口的根视图控制器吗?
-
@RamyAlZuhouri 是的。是的。
-
我还读过(来自另一个 StackOverflow 问题,所以不确定这是否正确),您应该在推送新的视图控制器之前设置 hidesBackBackButton。但是,我在应用程序的许多其他地方都这样做,并且没有任何问题。如果是这种情况,还有其他方法吗?
标签: objective-c uinavigationcontroller back-button uinavigationitem