按下视图控制器后删除“返回”按钮

Posted

技术标签:

【中文标题】按下视图控制器后删除“返回”按钮【英文标题】:Remove "Back" button after pushing view controller 【发布时间】:2016-01-26 16:56:12 【问题描述】:

我有一个登录屏幕作为我的根视图控制器。如果用户已经登录,我想跳过登录屏幕并显示主视图控制器。

下面的代码可以做到这一点,但它在导航栏中显示了一个后退按钮,而不是默认的导航栏。

有没有办法去掉后退按钮?应该有一个菜单按钮,所以仅仅隐藏后退按钮是不够的。

谢谢!

- (void)viewDidLoad 
    if(GetUserName != nil)
        [self pushingView:YES];
    
    [super viewDidLoad];


-(void)pushingView:(BOOL)animation
    MainViewController *revealViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"RevealViewController"];
    [self.navigationController pushViewController:revealViewController animated:animation];

【问题讨论】:

【参考方案1】:

不要试图移除后退按钮,而是移除对后退按钮的需要。而不是使用pushViewController:animated: 使用setViewControllers:animated:。这样一来,堆栈上只有一个视图控制器(并且您节省了保持视图控制器存在的内存)。

理想情况下,您甚至不会加载登录视图控制器,这样您就可以节省更多的内存和时间。

【讨论】:

如果我需要检查验证,如何避免加载登录视图? 在哪里创建/推送登录视图控制器,您将执行与GetUserName 相同的逻辑检查来决定是否需要。创建一个视图控制器只是为了进行检查是一种昂贵的浪费。您可能需要根据您的 VC 结构向应用程序委托添加逻辑

以上是关于按下视图控制器后删除“返回”按钮的主要内容,如果未能解决你的问题,请参考以下文章

保存后如何返回上一个控制器并刷新该控制器

按下后退按钮后,从另一个视图控制器更改按钮

按下 UINavigationController 后如何将编辑按钮添加到 UINavigationBar

必须更改语言后刷新导航返回按钮的标题

按下导航控制器左栏按钮时如何停止视图消失

如何通过在自定义视图中按下按钮从超级视图中删除自定义视图?