How to hide navigation bar back button?

橙三吉。 提交于 2019-11-30 13:11:38

问题


I'm trying to to hide navigation bar back button on an Apple Watch. There are a lot of questions for similar to mine but they are for iPhone and if you are know a little about Apple Watch there are InterfaceController instead of ViewController.

So when I push a new InterfaceController using the code below:

[self pushControllerWithName:@"about" context:nil];

It shows a back button on the navigation bar above and it takes it back to the previous InterfaceController from which it is generated.

Anyone have any idea how to hide or remove navigation bar or this back button from Apple Watch?


回答1:


I had the same problem and solved it using :

NSMutableArray* controllerNames = [NSMutableArray new];
[controllerNames addObject:@"myInterfaceController"];
[WKInterfaceController reloadRootControllersWithNames:controllerNames contexts:myArrayOfData];

When the ICs are reloaded then they don't have navigation back buttons as they are the main IC.

Note

This method actually change your Initial Controller ( Main Interface Controller with arrow in storyboard.) of your watch app, that is the reason the Interface Controller does not have back button.




回答2:


Here is the Swift version for all the trailblazers out there:

WKInterfaceController.reloadRootControllersWithNames(["myInterfaceController"], contexts: [])



回答3:


+ (void)reloadRootControllersWithNames:(NSArray *)names contexts:(NSArray *)contexts;

But you will lose the 'push' animation.




回答4:


If you remove the back button, how are you planning to go back to previous screen?

This are my observations on navigation buttons in Apple Watch: Till now, we haven't found any method to over-ride the back-button title or remove it. Even they have provided option to add title, but no way to customize the font or anything. Most probably when Apple releases the original version they will provide all options.

UIKit and WK-kit In UIKit you can actually hide it using hidesbackbutton property, but in watch it will show you the previous interface controllers title. In UIKit, we are using UIViewController, but in Watch it is WKInterfaceController.

Inheritance

NSObject -> WKInterfaceController

NSObject -> UIResponder -> UIViewController



来源:https://stackoverflow.com/questions/28019256/how-to-hide-navigation-bar-back-button

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!