iOS导航栏:将左栏按钮从菜单更改为后退

iOS导航栏:将左栏按钮从菜单更改为后退,ios,uinavigationbar,back-button,Ios,Uinavigationbar,Back Button,我有一个应用程序,它使用一个侧菜单,有几个主屏幕可以从菜单中访问,还有一些只能从这些屏幕访问 我想要的是在导航栏上有一个菜单按钮,可以打开菜单,并且只能在主屏幕上看到。在其他屏幕上,我希望有一个后退按钮,而不是菜单按钮 我已经将菜单按钮放在如下位置: self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"IconMenu"] style:UIBarB

我有一个应用程序,它使用一个侧菜单,有几个主屏幕可以从菜单中访问,还有一些只能从这些屏幕访问

我想要的是在导航栏上有一个菜单按钮,可以打开菜单,并且只能在主屏幕上看到。在其他屏幕上,我希望有一个后退按钮,而不是菜单按钮

我已经将菜单按钮放在如下位置:

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"IconMenu"] style:UIBarButtonItemStylePlain target:self.revealViewController action:@selector(revealToggle:)];
但我不知道在需要时如何使用“后退”按钮进行更改。

假设“主屏幕”是指导航视图控制器中与所选侧菜单项对应的根(第一个)视图控制器,这可能是解决问题的方法:您可以为所有视图控制器创建一个超类,假设MyBaseViewController和rewrite
视图将出现:
方法,该方法将根据它是否为“主屏幕”确定它是否应具有默认的后退按钮或“RevelSideMenu”按钮

假设“主屏幕”不是指导航视图控制器中与所选侧菜单项对应的根(第一个)视图控制器,这可能是问题的解决方案:您可以为所有视图控制器创建一个超类,例如MyBaseViewController,并重写
视图将出现:
方法,这将根据它是否是“主屏幕”来确定它应该有一个默认的后退按钮还是一个“revealSideMenu”按钮


您可以通过两种不同的方式实现:

第一个是在ViewDidDisplay中检查后退按钮是否已经存在(当您按下VC时,后退按钮会自动添加,但只有在ViewDidDisplay出现后才可通过编程方式使用),然后决定是否添加菜单按钮

第二种方法是向VC init方法添加一个参数,如isRoot或hasMenu或任何您想命名的方法,并使用该标志决定添加菜单或后退按钮

如果您选择添加自己的后退按钮,则必须在后退选择器中调用此方法

    [self.navigationController popViewControllerAnimated:YES];

您可以通过两种不同的方式实现:

第一个是在ViewDidDisplay中检查后退按钮是否已经存在(当您按下VC时,后退按钮会自动添加,但只有在ViewDidDisplay出现后才可通过编程方式使用),然后决定是否添加菜单按钮

第二种方法是向VC init方法添加一个参数,如isRoot或hasMenu或任何您想命名的方法,并使用该标志决定添加菜单或后退按钮

如果您选择添加自己的后退按钮,则必须在后退选择器中调用此方法

    [self.navigationController popViewControllerAnimated:YES];

IMO,最简单的方法就是单击第一个ViewController的标题栏和属性检查器中的
(⌥+⌘+4) 
更改导航项的信息方式:标题->“后退”按钮中会显示什么*或者如果您想让它显示除第一个ViewController的标题或单词“后退”以外的内容,您只需将其放在后退按钮字段中即可


*如果第二个ViewController的标题太长,无法匹配,它将被替换为单词“Back”(如果单词“Back”不匹配,它将只有箭头符号)。

最简单的方法是,只需单击第一个ViewController的标题栏和属性检查器中的
(⌥+⌘+4) 
更改导航项的信息方式:标题->“后退”按钮中会显示什么*或者如果您想让它显示除第一个ViewController的标题或单词“后退”以外的内容,您只需将其放在后退按钮字段中即可


*如果第二个ViewController的标题太长而不适合,它将被替换为单词“Back”(如果单词“Back”不适合,它将只具有箭头符号)。

Dariaa,如果我在ViewDiLoad中没有错,则视图控制器尚未添加到navigationCotroller堆栈中,所以这段代码不会有问题,我的意思是viewwillappearth问题是我只有一个导航控制器(在我找到的开源菜单库中实现的一个)。然后我误解了你所说的“主屏幕”是什么意思。那么,“主”屏幕和“非主”屏幕之间的区别是什么?您使用的是哪个库?看看这一个Dariaa,如果我在viewDidLoad中没有错的话,视图控制器还没有添加到navigationCotroller堆栈中,所以这段代码不会坏,我的意思是ViewWillAppearth问题是我只有一个导航控制器(在我找到的开源菜单库中实现的一个).然后我误解了你说的“主屏幕”是什么意思。那么,“主”屏幕和“非主”屏幕之间的区别是什么?您使用的是哪个库?看看这个