2013-04-28 42 views
0

由于在Objective-C和iOS开发中我是一个完整的初学者,所以我提前表示歉意,但是我遇到了一个令人困惑的问题我。我在一个视图中使用了这个代码,我想在“登录”页面后面显示一些名为“Home Page”的内容。添加到UINavigationController的按钮在导航到下一页之前不会显示

- (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实际上似乎工作得很好。任何指示如何解决这个问题将非常感激。提前致谢!

回答

1

当你做这样的事情:

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

这设置后退按钮将返回到此视图控制器,而不是当前显示的后退按钮。这就是为什么登录按钮在您进入“新建”页面时显示的原因,因为您刚更改了返回到主屏幕的后退按钮。

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

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

希望是有道理的。

+0

它是有道理的,但可以通过几种方式进入主页:1)登录,2)从其他页面返回。在第二种情况下,我在哪里设置backBarButtonItem? – 2013-04-28 09:05:20

+0

如果你从登录页面 - >主屏幕 - >另一页面,然后从另一页面回到主屏幕,后退按钮应该仍然与以前相同。 – 2013-04-28 09:13:52

+0

此外,目标需要是具有“logout_Action”方法的视图控制器,我将编辑我的答案。 – 2013-04-28 09:30:52

1

这可能是因为你设置的后退按钮是你登出按钮,

尝试更换

self.navigationItem.backBarButtonItem

self.navigationItem.leftBarButtonItem

+0

嗯,它的工作 - 但它现在有按钮的形状,而不是后面的形状。 – 2013-04-28 05:52:47

+0

看起来似乎没有任何办法可以解决这个问题,只能创建一个图像并在那里使用自定义按钮。我必须重新将视图推送到堆栈的方式,我想我可以适当地推入后退按钮。如果我在登录页面中将登出按钮放在堆栈上,然后某个用户返回登录页面,会自动恢复登出按钮吗? (即与堆栈一起保存) – 2013-04-28 05:54:08

+0

如果您有一个视图控制器返回堆栈,那么您只能拥有“本机”后退按钮。 如果你觉得它回答你的问题,请接受答案。 – Erik 2013-04-30 06:47:14

相关问题