我有一个基于标签栏的应用。 但是,从一个屏幕,用户可以转到更详细的视图,该视图没有标签栏。
详细屏幕顶部有一个导航栏,右侧有一个简单的按钮,作为导航栏的一部分。 (我在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中手动添加它并获取相应的背景图像?
非常感谢!
答案 0 :(得分:0)
您必须将backbuttonItem添加到第一个视图,而不是第二个视图。这个过程非常令人困惑。无论如何,我使用这两种方法来设置和清除后退按钮标题:
- (void)defaultBackButtonTitle
{
UIBarButtonItem *temporaryBarButtonItem = [UIBarButtonItem new];
[temporaryBarButtonItem setTitle:@"Back"];
self.navigationItem.backBarButtonItem = temporaryBarButtonItem;
}
- (void)clearBackButtonTitle
{
self.navigationItem.backBarButtonItem = nil;
}
当您按下想要拥有后退按钮的viewController时调用第一个,当您获得viewWillAppear时(第一个顶视图控制器中)调用第二个。