我提前道歉,因为在 Objective-C 和 iOS 开发方面我是一个完全的初学者,但是我遇到了一个真正让我困惑的问题。我在一个 View 中有这段代码,我想把它放在一个叫做“主页”的东西上,它显示在“登录”页面之后。
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]
initWithTitle: @"Sign Out"
style: UIBarButtonItemStyleBordered
target: self
action: @selector(logout_Action:)];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]
initWithTitle:@"New"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(new_Action:)];
[self.navigationItem.backBarButtonItem release];
[self.navigationItem.rightBarButtonItem release];
self.navigationItem.hidesBackButton = NO;
不幸的是,直到用户导航到下一页(即单击我声明的“新建”按钮)后,“注销”按钮才会显示。
有趣的是,rightBarButtonItem 实际上看起来工作正常。任何有关如何解决此问题的指示都将不胜感激。提前致谢!
最佳答案
当你做这样的事情时:
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]
initWithTitle: @"Sign Out"
style: UIBarButtonItemStyleBordered
target: self
action: @selector(logout_Action:)];
这会设置返回到此 View Controller 的后退按钮,而不是当前显示的后退按钮。这就是为什么当您转到“新建”页面时会显示注销按钮的原因,因为您刚刚更改了返回主屏幕的后退按钮。
因此,如果您想要更改后退按钮,请将这段代码放在 PREVIOUS View Controller 中,即指向主页的那个。示例:
- (void)viewDidLoad
{
[super viewDidLoad];
// In view controller that comes BEFORE the "Home page"
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]
initWithTitle: @"Sign Out"
style: UIBarButtonItemStyleBordered
target: homeScreenController
action: @selector(logout_Action:)];
希望这是有道理的。
关于ios - 添加到 UINavigationController 的按钮在导航到下一页后才会显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16259722/