我在AppDelegate中设置了UINavigationController:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Add the navigation controller's view to the window and display.
[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible];
return YES;
}
在我的RootViewController中,我将另一个视图推送到堆栈:
//Show the deals
DealViewController *dvc = [[DealViewController alloc] initWithNibName:@"DealViewController" bundle:nil];
[self.navigationController.navigationBar setHidden:NO];
[self.navigationController pushViewController:dvc animated:YES];
视图显示,但没有后退按钮添加到导航栏。为什么这样,我该如何解决?
答案 0 :(得分:24)
您是否在RootViewController中设置self.title
?也许UINavigationController没有任何文本可以放在后退按钮上,所以它省略了它??
您是在DealViewController中设置hidesBackButton = YES
还是backBarButtonItem = nil
,还是定义了不同的leftBarButtonItem
?
答案 1 :(得分:4)
试试这个:
DetailViewController *detailViewController = [[DetailViewController alloc] init];
UIBarButtonItem *back = [[UIBarButtonItem alloc] initWithTitle : @"Back"
style : UIBarButtonItemStyleDone
target : nil
action : nil];
self.navigationItem.backBarButtonItem = back;
[self.navigationController pushViewController : detailViewController animated : YES];
[detailViewController release];
答案 2 :(得分:3)
您必须将导航控制器视为一组导航控制器,每个导航控制器控制一个充满信息的屏幕。 使用
实例化导航控制器-(id)initWithRootViewController:(UIViewController *)rootViewController
方法。您在此调用中指定了根视图控制器。然后将导航控制器的视图作为子视图添加到窗口中,就像之前一样。
如果要显示第二个屏幕,请使用
按下堆栈上的另一个视图控制器-(void)pushViewController:detailViewController animated:YES
方法
答案 3 :(得分:3)
使用presentModalViewController
显示naviagtionController。像这样设置navagitionController栏按钮:
[navigationController.navigationBar.topItem setLeftBarButtonItem:
[[[UIBarButtonItem alloc] initWithTitle: @"Back"
style: UIBarButtonItemStylePlain
target: self
action: @selector(dismisstheModal:)] autorelease]];
答案 4 :(得分:1)
这发生在我身上,因为在我的导航控制器的内容控制器中,我在viewDidLoad
和另一个继承自我的内容控制器的类中设置了一些导航控制器行为,并且正在呈现的那个,我实现了viewDidLoad
也是如此,忘记调用[super viewDidLoad]
,从而导致我覆盖了我设置导航控制器按钮的基类viewDidLoad
。 Oooops。