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

时间:2013-04-28 04:49:27

标签: ios objective-c uinavigationcontroller

我提前道歉,因为我在Objective-C和iOS开发方面是一个完全的初学者,但是我遇到了一个令我困惑的问题。我在视图中有这个代码,我想在“登录”页面之后显示一个名为“主页”的内容。

- (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;

不幸的是,直到用户导航到NEXT页面时才显示“注销”按钮,即单击我声明的“新建”按钮。

有趣的是, rightBarButtonItem 实际上似乎工作得很好。任何指向如何解决这个问题的指针都将非常感激。提前谢谢!

2 个答案:

答案 0 :(得分:1)

这可能是因为您将后退按钮设置为退出按钮

尝试替换

self.navigationItem.backBarButtonItem

self.navigationItem.leftBarButtonItem

答案 1 :(得分:1)

当你做这样的事情时:

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]
                                         initWithTitle: @"Sign Out"
                                         style: UIBarButtonItemStyleBordered
                                         target: self
                                         action: @selector(logout_Action:)];

设置返回此视图控制器的后退按钮,而不是显示的当前后退按钮。这就是当您转到“新建”页面时出现注销按钮的原因,因为您刚刚更改了将返回主屏幕的后退按钮。

因此,如果您想要更改后退按钮,请将此代码放在PREVIOUS视图控制器中,即通向主页的视图。例如:

- (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:)];

希望这是有道理的。