LogOut按钮创建后退按钮

时间:2016-05-12 12:35:16

标签: ios swift uitableview button uibutton

我在我的UITableViewController中创建了一个按钮作为左栏按钮项目,用于记录当前用户和segue以及登录ViewController

问题是点击它会在登录ViewController上创建一个后退按钮,用户可以返回上一个视图。

7 个答案:

答案 0 :(得分:4)

通常,应用程序流程就像我们将loginViewController设置为应用程序的rootviewcontroller一样,我们根据应用程序流程及其需要推送nextViewController。但在你的情况下,你会在退出时再次推送loginViewController而不是popToRootViewControllerAnimated代码

因此,在您的注销按钮clickEvnet:

上使用以下代码
[self.navigationController popToRootViewControllerAnimated:YES];

我不建议使用隐藏BackBarButton并执行任何其他技巧,只需执行popToRootViewControllerAnimated

即可

如果您在swift中执行代码,则可以使用以下代码:

 self.navigationController?.popToRootViewControllerAnimated(true)

<强>更新 我只是为你创建一个例子。您可以从以下网址下载:

https://github.com/nitingohel/swiftSeque

其输出如下:

enter image description here

答案 1 :(得分:2)

您的架构错了。您不应该对登录控制器进行segue,这样导航堆栈就不会是空的,并且您将在注销事件之前拥有所有视图控制器。按下注销按钮时,您可以执行的操作是:

如果是根视图控制器:

[self.navigationController popToRootViewControllerAnimated:true];

如果不是:

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *login = [storyboard instantiateViewControllerWithIdentifier:@"Login"];
    [self.navigationController setViewControllers:@[login] animated:true];

答案 2 :(得分:2)

我认为你的app导航控制器流程是错误的。登录视图控制器应该是导航控制器的rootview控制器,或者它应该是初始视图控制器。你有另一个像Wybierz miasto的viewcontroller !!它不应该是这样的。

你可以打电话

 [self.navigationController popToRootViewControllerAnimated:YES]; 

从导航堆栈的任何视图控制器转到rootview控制器。 (即退出)。

如果您必须要求这样的流程,那么您可以隐藏并显示像<,p>这样的后退按钮

  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];
 }

在评论中提到的swift更新

    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
}

如果有任何错误,请尽快避免错误!对swift不太熟悉!

希望这会有所帮助:)

答案 3 :(得分:1)

不要隐藏navigationBarItem之类的技巧。不建议这样做。而不是那个电话

 [self.navigationController popToRootViewControllerAnimated:YES]; 

始终将登录屏幕保持为RootViewController

答案 4 :(得分:0)

在登录视图控制器viewWillAppear方法中使用此代码隐藏后退按钮

self.navigationItem.hidesBackButton = YES;

并隐藏导航栏

[[self navigationController] setNavigationBarHidden:YES];

如果您有任何问题,请告诉我

答案 5 :(得分:0)

使用此代码适用于您:

self.navigationItem.hidesBackButton = YES;

答案 6 :(得分:0)

此代码仅用于删除后退按钮。

override func viewWillAppear(_ animated: Bool) {
        self.navigationItem.hidesBackButton = true
    }

希望这会起作用。