ios - 禁用从导航 Controller 返回到上一个 View Controller

标签 ios objective-c

设置:

在您从 SignUpViewController 注册后你去PostsViewController .它们通过 show 连接segue,所以在导航栏里面,< SignUp按钮是自动创建的。

问题:

我想隐藏此按钮,因为您永远不必返回到 SignUpViewController除非你已经注销。我认为从导航堆栈中删除 View Controller 就可以完成这项工作。我做了以下事情:

NSArray *navVCs = [self.navigationController viewControllers];
for (UIViewController *vc in navVCs) {
    if ([vc isKindOfClass:[SignUpViewController class]]) {
        [vc removeFromParentViewController];
    }
}

我检查了 SignUpViewController已从导航堆栈中正确移除,但仍未移除后退按钮。

我也试过设置

self.navigationItem.hidesBackButton = YES;
self.navigationController.navigationBar.userInteractionEnabled = NO;
self.navigationItem.backBarButtonItem = nil;
self.navigationItem.leftBarButtonItem = nil;

而且他们都没有删除 < SignUp导航栏中的按钮 PostsViewController .

解决方案:

我在 StackOverflow 上到处查看,很惊讶我找不到答案。预先感谢您的帮助!

最佳答案

我建议不要禁用后退按钮,而是查看 View Controller 的设计顺序。

而不是像这样的过渡:

NavController -> SignUp -> Posts

尝试这样的事情

Signup || NavController > Posts

Signup View 不再通过 segue 连接到导航 Controller 。

您可以在应用程序启动时检测是否需要注册屏幕以及它是否以模态方式(或您希望的方式)出现。当用户完成注册后,您可以实例化嵌入在导航 Controller 中的 Posts Controller ,而不是继续访问它。这样就没有以前的注册 View 可以返回,也没有后退按钮。

关于ios - 禁用从导航 Controller 返回到上一个 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32681488/

相关文章:

ios - 以编程方式获取 uibutton 的约束

ios - NSTimer 没有从 Singleton 类触发

c++ - 将 self 从 Objective C 传递到 C++,不再重新分配

iphone - 解析问题

objective-c - 如何使用 Parse 中的查询检查值是否存在于 2 个不同的字段中?

objective-c - NS面板: double animation

ios - Swift Core Data Fetch 某个日期的结果

ios - 网络扩展查看打印报表

iphone - NSPredicate同时使用IN和LIKE

ios - 优化:什么是 sidetable_release() 和 sidetable_retain()?