0

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

详细屏幕顶部有一个导航栏,右侧有一个简单的按钮,作为导航栏的一部分,它可以工作。(我在 IB 的 Bar Button Item 中创建了导航栏和右键,并将其附加到网点)

然而,由于我必须从这个屏幕返回,所以我喜欢使用标准导航栏添加 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 中手动添加它并获取适当的背景图像?

非常感谢!

4

1 回答 1

0

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

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

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

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

于 2012-07-22T18:33:05.287 回答