ios - 添加到 UINavigationController 的按钮在导航到下一页后才会显示

标签 ios objective-c uinavigationcontroller

我提前道歉,因为在 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/

相关文章:

ios如何用iphone应用程序版本按版本管理数据库?

ios - 从 NsMutable 数组而不是字符串加载按钮值

c - .h 和 .m 代表什么?

ios - 更改 UINavigation Controller 以与 SlidePanel 配合使用

iOS:通过以编程方式添加约束作为唯一指示器获取 View 高度

ios - 从 SKScene 中解雇 MFMailComposeViewController

iPhone iOS 在后台运行的应用程序会生成和处理通知吗?

objective-c - 核心数据 "Connection Invalid"

ios - UINavigtionController Nib 的顶部栏黑色不透明不在 UIViewController 上显示黑色

ios - UiImagePicker 自定义部分