1

我有一个使用侧边菜单的应用程序,并且有几个可以从菜单访问的主屏幕和其他只能从这些屏幕访问的主屏幕。

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

我已经像这样放置了菜单按钮:

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"IconMenu"] style:UIBarButtonItemStylePlain target:self.revealViewController action:@selector(revealToggle:)];

但是我不知道如何在需要时使用后退按钮进行更改。

4

3 回答 3

1

假设“主屏幕”是指导航视图控制器中与所选侧菜单项相对应的根(第一个)视图控制器,这可能是您问题的解决方案:您可以为所有视图控制器创建一个超类,例如 MyBaseViewController和 rewriteviewWillAppear:方法,这将根据它是否是“主屏幕”来确定它是否应该具有默认的后退按钮或“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:)];
    }
}
于 2013-10-25T08:35:41.923 回答
0

你可以通过两种不同的方式做到这一点:

第一个是在 viewDidAppear 检查后退按钮是否已经存在(当您按下 VC 时,后退按钮会自动添加,但仅在 viewDidAppear 之后以编程方式可用),然后决定是否添加菜单按钮,

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

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

    [self.navigationController popViewControllerAnimated:YES];
于 2013-10-25T08:37:26.073 回答
0

最简单的方法,IMO,就是点击第一个 ViewController 的标题栏,然后在Attribute Inspector 中按照你想要的方式(⌥+⌘+4)更改Navigation Item信息: Title -> what will show up in the back button* 或者如果你想要它要说除第一个 ViewController 的Title或单词“ Back ”之外的其他内容,您可以将其放在Back Button字段中。

*如果第二个 ViewController 的 Title 太长而无法容纳,则将其替换为“ Back ”一词(如果“ Back ”一词不适合,则仅具有箭头符号)。

于 2014-03-04T07:46:36.760 回答