【问题标题】:How to set UIViewController to be shown on back button of Navigation bar?如何设置 UIViewController 显示在导航栏的后退按钮上?
【发布时间】:2015-07-07 07:04:53
【问题描述】:

我有一个带有结帐按钮的ViewController,如果用户已登录,点击结帐按钮CartViewController 应打开,但如果用户未登录,LoginViewController 应打开,登录后CartViewController 应打开,这工作正常,但我的问题是当我点击CartViewController 中导航栏的降压按钮时,如果它来自LoginViewController,它会显示 LoginViewController。我希望它每次都回到ViewController

【问题讨论】:

  • 我已经发布了答案,请尝试一下。
  • 我想知道为什么有人对每个帖子都投了反对票。
  • 可能他们不知道 -1 对他们来说也是每个downvote
  • @VarunNaharia - 当您不接受任何替代答案时,从“已接受”状态中删除答案的任何具体原因?
  • 我正在删除所有反对票问题和答案

标签: ios objective-c uiviewcontroller uinavigationcontroller uinavigationbar


【解决方案1】:

您可以操作UINavigationController 对象的viewControllers 属性以从堆栈中删除特定对象。所以当你走ViewController -> LoginViewController-> CartViewController的路线时,你应该从堆栈中删除LoginViewController对象。这样,当您从 CartViewController 弹出时,您将回到 ViewController
查看This Question 了解如何操作导航控制器堆栈

【讨论】:

    【解决方案2】:

    在导航返回栏按钮项目操作上编写以下代码(用于删除到 rootViewController):
    代码:

    [self.navigationController popToRootViewControllerAnimated:YES];
    

    【讨论】:

    • 您假设 ViewController 是应用程序的初始点。如果 ViewController 不是栈中的根对象怎么办?
    • @Gandalf 你是对的。但我认为对于这个问题视图控制器它是 RootViewController...
    • 是的,我知道如果是这样的话,这将完美地工作。但它可能是也可能不是。我相信当事情不清楚时,解决方案应该更通用。
    • @Gandalf 是的。你是绝对正确的,但在这个问题中他提到了这一点。 (如果他有一个视图控制器并从它开始导航,那么它应该是根视图控制器)所以根据我对这个问题的看法,这是一个完美的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多