在UINavigationController中为根视图制作后退按钮

ada*_*m_0 11 objective-c uinavigationcontroller ios

所以我手动创建了一个UINavigationController,将其设置为我的UIWindow的 rootViewController,我想使用后退按钮退出UINavigationController并在其位置加载另一个viewController.但是,UINavigationBarbackItem属性是readonly,所以我不知道如何正确设置它(它是只读的,在根导航视图中默认为nil).我怎样才能实现这一点(或类似的效果,我希望能够通过按下根视图上的后退按钮有效地"退出"这个UINavigationController).

或者,这是不好的形式?我应该如何逃避UINavigationController的根视图?

编辑:

使用以下代码尝试了Legolas的解决方案:(某些名称已更改)

UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:plvc]; // plvc being the first viewcontroller
MyAppDelegate* appDelegate = [Utility getAppDelegate];
appDelegate.window.rootViewController = navController;

UIBarButtonItem* backButton = [[UIBarButtonItem alloc] initWithTitle:@"Start" style:UIBarButtonItemStyleBordered target:self action:@selector(initializeStuff)];
navController.navigationItem.leftBarButtonItem = backButton;
[navController.navigationItem setHidesBackButton:YES animated:YES];
[navController.view setNeedsDisplay];
Run Code Online (Sandbox Code Playgroud)

但按钮不显示.我究竟做错了什么?其他后退按钮显示正常,但这个仍然没有.

Leg*_*las 16

您可以采用不同的方法.

转到方法:

- (void)viewDidLoad
Run Code Online (Sandbox Code Playgroud)

隐藏后退按钮

[self.navigationItem setHidesBackButton:YES animated:YES];
Run Code Online (Sandbox Code Playgroud)

创建一个新的UIButton或UIBarButtonItem,并将其放在后退按钮的位置.

然后,您可以在单击按钮时使用操作

- (IBAction) clickBackButton : (id) sender; //and push view controller to your required view.
Run Code Online (Sandbox Code Playgroud)

更新我的答案:在viewDidLoad方法中使用它//就像一个魅力//

[self.navigationItem setHidesBackButton:YES animated:YES];
UIBarButtonItem* backButton = [[UIBarButtonItem alloc] initWithTitle:@"Start" style:UIBarButtonItemStyleBordered target:self action:@selector(initializeStuff)];

self.navigationItem.leftBarButtonItem = backButton;
Run Code Online (Sandbox Code Playgroud)