有没有办法在此设置中获取导航栏中的标准后退按钮?

时间:2012-07-22 18:04:40

标签: iphone ios xcode uinavigationbar back-button

我有一个基于标签栏的应用。 但是,从一个屏幕,用户可以转到更详细的视图,该视图没有标签栏。

详细屏幕顶部有一个导航栏,右侧有一个简单的按钮,作为导航栏的一部分。 (我在IB栏中的栏按钮项目中创建了导航栏和右键,并将其附加到出口处)

然而,由于我必须从此屏幕返回,我想使用标准导航栏添加STANDARD后退按钮。 (我可以在IB中手动添加它,但我没有现成的标准图像,并认为使用标准会“更聪明”)

这是我在SettingsVC1:

中创建详细视图(SettingsVC2)的地方
SettingsVC2 *settingsVC2 = [[SettingsVC2 alloc] initWithNibName:@"SettingsVC2" bundle:nil selectedTCNumber:tcNumber];
settingsVC2.delegate = self;
UIBarButtonItem *temporaryBarButtonItem = [[UIBarButtonItem alloc] init];
temporaryBarButtonItem.title = @"Back";
settingsVC2.navigationItem.backBarButtonItem = temporaryBarButtonItem;
settingsVC2.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:settingsVC2 animated:YES completion:nil];   

虽然导航栏本身出现在SettingsVC2中,但不会出现后退按钮。

这是SettingsVC2本身的代码:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil selectedNumber: (NSInteger) numberx
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.tabBarItem.image = [UIImage imageNamed:@"settings"];
        self.view.backgroundColor = [UIColor whiteColor];
        self.tableView.opaque = TRUE;

        navBar.tintColor = [UIColor colorFromRGBIntegers:W_COLOR_R green:W_COLOR_G blue:W_COLOR_B alpha:W_COLOR_A];
        navBar.topItem.title =  NSLocalizedString(@"Settings2", @"Settings2");

        UIBarButtonItem *temporaryBarButtonItem = [[UIBarButtonItem alloc] init];
        temporaryBarButtonItem.title = @"Back";
     /*
        self.navigationItem.backBarButtonItem = temporaryBarButtonItem;
        [self.navigationItem.backBarButtonItem setEnabled:YES];
        [self.navigationItem.backBarButtonItem setStyle:UIBarButtonItemStyleDone];
      */
        navBar.topItem.backBarButtonItem = temporaryBarButtonItem;
    }
    return self;
}

此代码和注释掉的代码都不会显示后退按钮。

是否有“标准”方式来获取后退按钮(在我的情况下不使用UINavigationController)或者我是否必须在IB中手动添加它并获取相应的背景图像?

非常感谢!

1 个答案:

答案 0 :(得分:0)

您必须将backbuttonItem添加到第一个视图,而不是第二个视图。这个过程非常令人困惑。无论如何,我使用这两种方法来设置和清除后退按钮标题:

- (void)defaultBackButtonTitle
{   
    UIBarButtonItem *temporaryBarButtonItem = [UIBarButtonItem new];
    [temporaryBarButtonItem setTitle:@"Back"];
    self.navigationItem.backBarButtonItem = temporaryBarButtonItem;
}

- (void)clearBackButtonTitle
{   
    self.navigationItem.backBarButtonItem = nil;
}

当您按下想要拥有后退按钮的viewController时调用第一个,当您获得viewWillAppear时(第一个顶视图控制器中)调用第二个。