2016-11-15 113 views
0

我创建了一个设置为RootViewController的LoginViewController的Storyboard。如果用户已经登录,那么我只是继续到HomeViewController。隐藏导航栏时的奇怪行为后退按钮

问题出在HomeViewController上。我不希望用户导航回LoginViewController所以我想利用隐藏在HomeViewController后退按钮:

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

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

任何想法?

回答

0

这是因为您在ViewWillAppear中设置了SetHidesBackButton。 复制粘贴到你的ViewDidLoad(),它应该工作得很好。

More Info

+0

谢谢。试过,但它没有奏效。 – empo

0

似乎与rootViewController问题,你用navigationController分配和也。为了避免这种行为,您应该从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 
+0

在AppDelegate而不是Storyboard中设置RootViewController有什么区别?另外你也没有真正解释我的RootViewController/NavigationController有什么问题 - 请你详细解释一下吗? – empo

+0

@empo是的,你可以在任何地方使用它,但是如果我们可以从AppDelegate定义rootViewController,我没有看到代码,所以只是一个建议和好方法。还隐藏返回按钮,你应该使用viewDidLoad。非常感谢 :) –

0

不要试图隐藏按钮。使用NavigationController作为根。将登录按回家并从导航堆栈中删除登录。