【问题标题】:Strange behaviour when hiding Navigation Bar Back Button隐藏导航栏后退按钮时的奇怪行为
【发布时间】:2016-11-15 10:08:17
【问题描述】:

我用一个设置为 RootViewController 的 LoginViewController 创建了我的 Storyboard。如果用户已经登录,那么我只需转到 HomeViewController。

问题出在 HomeViewController 上。我不希望用户导航回 LoginViewController,所以我尝试使用以下方法隐藏 HomeViewController 中的后退按钮:

public override void ViewWillAppear(bool animated)
{
    NavigationItem.SetHidesBackButton(true, false);
} 

这样做会按预期隐藏 HomeViewController 上的按钮,但是当我导航到任何其他 VC 时,后退按钮仍然隐藏但可点击,因为我可以点击按钮所在的位置,然后它会导航回 HomeVC。如果我然后再次导航到与以前相同的 VC,则可以看到“后退”按钮。所以基本上它只在第一次加载时隐藏。

有什么想法吗?

【问题讨论】:

    标签: ios xamarin xamarin.ios


    【解决方案1】:

    那是因为您在 ViewWillAppear 中设置了 SetHidesBackButton。 将其复制粘贴到您的 ViewDidLoad() 中,它应该可以正常工作。

    More Info

    【讨论】:

      【解决方案2】:

      不要试图隐藏按钮。使用 NavigationController 作为根。推送登录然后主页并从导航堆栈中删除登录。

      【讨论】:

        【解决方案3】:

        您分配的rootViewControllernavigationController 似乎都有问题。为避免这种行为,您应该导航并从 AppDelegate 分配 rootViewController,同时改进您的后退按钮隐藏代码。

        如需更多帮助,请粘贴代码,谢谢!

        AppDelegate.swift

        func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
        
             var rootView: MyRootViewController = MyRootViewController()
        
             if let window = self.window{
                    window.rootViewController = rootView
             }
        
             return true
        }
        

        ViewDidLoad

        navigationItem.hidesBackButton = true
        

        【讨论】:

        • 在 AppDelegate 而不是 Storyboard 中设置 RootViewController 有什么区别?此外,您并没有真正解释我的 RootViewController/NavigationController 的问题所在 - 请您更详细地解释一下吗?
        • @empo 是的,你可以在任何地方使用它,但是我没有看到代码,所以如果我们可以从 AppDelegate 定义 rootViewController,这只是一个建议和好方法。还隐藏您应该从 viewDidLoad 使用的后退按钮。非常感谢:)
        猜你喜欢
        • 2012-04-21
        • 2012-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-23
        • 2013-01-13
        • 1970-01-01
        相关资源
        最近更新 更多