不会出现NavigationController的backButton

时间:2010-11-30 16:23:36

标签: iphone objective-c

我已发布此问题,但这次我发布了代码。所以我有一个uiviewController,在这个viewController的viewDidLoad中我隐藏了navigationController的backButton。之后,我推了一个新的uiviewcontroller,并将backbutton设置为viewDidLoad中的可见按钮,但后面的按钮仍然隐藏...

第一个uiviewcontroller的实现

- (void)viewDidLoad {
    [super viewDidLoad];

    self.navigationItem.title = @"page2page2page2page2page2";

    self.navigationItem.hidesBackButton = TRUE;
}

-(IBAction)click
{
    page3 *controller = [[page3 alloc] init];

    [self.navigationController pushViewController:controller animated:YES];

    [page3 release];
}

第3页的实施

- (void)viewDidLoad {
    [super viewDidLoad];

    self.navigationItem.title = @"page3";
    self.navigationItem.hidesBackButton = FALSE;

}

并且page3没有后退按钮,但为按钮创建了空间,因为磁贴“第3页”位于右侧而不是中间...所有这些都发生在ios 4.2上

THX

4 个答案:

答案 0 :(得分:2)

以上解决方法似乎都不适用于我。但是当显示第三个视图时,我可以看到按钮暂时闪烁。所以我怀疑问题(bug)与动画

有关

当pushViewController上的动画更改为NO时,问题就消失了

- (IBAction)btnNext:(id)sender {

    [[self navigationController] pushViewController:thirdViewController animated:NO];
}

答案 1 :(得分:2)

我的诀窍是将setNavigationBarHidden设置为YES并立即设置为NO。

[self.navigationItem setHidesBackButton:NO animated:YES];
[self.navigationController setNavigationBarHidden:YES];
[self.navigationController setNavigationBarHidden:NO];

因此,backButton不会被动画,但它确实有效,我的经理没有注意到它; P

答案 2 :(得分:1)

我得到同样的行为,我必须说我觉得很奇怪。我不能说为什么它不起作用,但作为一种解决方法,你可以这样做:

在第2页:

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self.navigationItem setHidesBackButton:YES animated:YES];
} 

在第3页:

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self.navigationItem setHidesBackButton:NO animated:YES];
}

并删除两个控制器中对self.navigationItem.hidesBackButton = ...的调用。

答案 3 :(得分:0)

嗯,我在运行iOS 4.2时遇到了同样的问题。后退按钮会拒绝出现。在自动驾驶到风景时,它会出现。我的解决方案是执行以下操作 - 这解决了问题...或者我们应该说它是一种解决方法;)

- (void)viewDidLoad 
{
    [super viewDidLoad];
    self.navigationItem.hidesBackButton = YES;
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    self.navigationItem.hidesBackButton = NO;
}