我在我的UITableViewController中创建了一个按钮,作为一个左栏按钮项目来记录当前用户的退出和segue,并登录到ViewController。
问题是,点击它会在登录ViewController上创建一个back按钮,用户可以返回到前面的视图。

发布于 2016-05-12 12:53:31
你的建筑是错的。您不应该对登录控制器做一个segue,这样导航堆栈就不会是空的,并且在注销事件之前就有了所有的视图控制器。当您按下注销按钮时,您可以做的是:
如果是根视图控制器:
[self.navigationController popToRootViewControllerAnimated:true];若否,则:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *login = [storyboard instantiateViewControllerWithIdentifier:@"Login"];
[self.navigationController setViewControllers:@[login] animated:true];发布于 2016-05-12 12:44:28
通常,应用程序流的工作方式类似于我们将loginViewController设置为应用程序的rootviewcontroller,并且根据应用程序流及其需求推送nextViewController。但在您的情况下,您需要在注销时再次推送loginViewController,而需要popToRootViewControllerAnimated代码。
因此,在注销按钮clickEvnet上使用以下代码:
[self.navigationController popToRootViewControllerAnimated:YES];我不建议使用隐藏BackBarButton,并做任何其他的技巧,你可以简单地放置一个popToRootViewControllerAnimated
如果您正在快速执行代码,您可以使用以下代码:
self.navigationController?.popToRootViewControllerAnimated(true)UPDATE我只是为您创建一个示例。您可以从以下网址下载:
https://github.com/nitingohel/swiftSeque
其产出如下:

发布于 2016-05-12 12:57:55
我认为你的应用程序导航控制器的流程是错误的。登录视图控制器应该是导航控制器的根视图控制器,或者是初始视图控制器。您有另一个视图控制器,类似于Wybierz miasto !!不应该这样的。
你可以打电话给
[self.navigationController popToRootViewControllerAnimated:YES]; 从导航堆栈的任意视图控制器到rootview控制器。(即注销)。
如果您必须像这样要求流,那么您可以隐藏并显示回退按钮,
self.navigationItem.hidesBackButton = YES; //NO for show如果您想隐藏特定视图控制器的导航栏,可以如下所示
-(void)viewWillAppear:(BOOL)animated{
[self.navigationController.navigationBar setHidden:YES];
}
-(void)viewDidDisappear:(BOOL)animated{
[self.navigationController.navigationBar setHidden:NO];
}按评论中的要求快速更新
self.navigationItem.hidesBackButton = true和
self.navigationController!.popToRootViewControllerAnimated(true)和
override func viewWillAppear(animated: Bool) {
self.navigationController!.navigationBar.hidden = true
}
override func viewDidDisappear(animated: Bool) {
self.navigationController!.navigationBar.hidden = false
}避免错误的迅速,如果有任何!不太熟悉斯威夫特!
希望这会有所帮助:)
https://stackoverflow.com/questions/37187066
复制相似问题