我有一个使用侧边菜单的应用程序,有几个可以从菜单访问的主屏幕和其他只能从这些屏幕访问的屏幕。
我想要的是在导航栏上有一个菜单按钮,用于打开菜单,只能在主屏幕上显示。在其他屏幕上,我想要一个后退按钮,而不是菜单按钮。
我已按下这样的菜单按钮:
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"IconMenu"] style:UIBarButtonItemStylePlain target:self.revealViewController action:@selector(revealToggle:)];
但是当我需要时,我无法弄清楚如何使用后退按钮更改它。
答案 0 :(得分:1)
假设“主屏幕”是指导航视图控制器中与所选侧面菜单项对应的根(第一个)视图控制器,这可能是您的问题的解决方案:您可以为所有视图控制器创建超类,比如MyBaseViewController和重写viewWillAppear:
方法,根据它是否是“主屏幕”确定它是否应该有默认的后退按钮或“revealSideMenu”按钮。
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if (self == [self.navigationController.viewControllers firstObject]) {
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"IconMenu"] style:UIBarButtonItemStylePlain target:self.revealViewController action:@selector(revealToggle:)];
}
}
答案 1 :(得分:0)
你可以用两种不同的方式做到这一点:
第一个是在viewDidAppear中检查后退按钮是否已经存在(当你按下VC时后退按钮自动添加,但只能在viewDidAppear之后以编程方式可用)然后决定添加或不添加菜单按钮,
第二个是向你的VC init方法添加一个参数,比如isRoot或hasMenu或者你喜欢的任何名字,并使用该标志决定添加菜单或后退按钮
如果您选择添加自己的后退按钮,则必须在后选择器中调用此方法
[self.navigationController popViewControllerAnimated:YES];
答案 2 :(得分:0)
最简单的方法,IMO,只需单击第一个ViewController的标题栏,然后在属性检查器 (⌥+⌘+4)
中更改导航项信息你想要的方式:标题 - >什么会显示在后退按钮*中,或者如果您想要说出第一个ViewController的标题或“返回”之外的其他内容,您可以放置它在后退按钮字段中。
*如果第二个ViewController的标题太长而不适合它,将替换为单词“返回”(如果单词“返回”不适合它只会有箭头标志。)