2017-08-09 51 views
1

在我的應用程序中,在用戶通過他的電子郵件和密碼在第一個故事板(Auth.storyboard)中成功登錄之後,他被導向第二個故事板中的ViewControllers之一(Main.storyboard )。問題是用戶能夠滑回Auth.storyboard的登錄屏幕。在Swift中登錄後滑回手勢

navigationController?.interactivePopGestureRecognizer?.isEnabled = false 

我知道,使用上面的代碼可以禁用此向後滑動手勢,但根據大多數人不推薦。

所以我不知道那有沒有更好的解決辦法,以防止登錄的用戶後輕掃回退姿勢。

+0

我不知道怎麼幫你,但我徘徊,爲什麼不建議設置'interactivePopGestureRecognizer.isEnabled'到'FALSE'。你能否提供更多的信息,爲什麼不推薦這些信息,也許可以鏈接到更多的細節? – Andrej

+0

請分享您用於將用戶重定向到main.storyboard的代碼 –

+0

檢查此鏈接==> https://stackoverflow.com/a/36217676/8192542 – Jay

回答

0

最好的辦法就是做你的登錄控制器模態,然後關閉它在以不添加該控制器您的導航堆棧。 如果它是您的初始控制器,請將其嵌入到與下一個控制器不同的控制器中,或以編程方式將其從導航堆棧中刪除。

0

你必須從堆棧中刪除登錄視圖控制器,你也可以讓你的主頁視圖控制器作爲RootViewController的:

var mainNavigationController:UINavigationController? 


//After login success 
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
let homeInstance = mainStoryboard.instantiateViewControllerWithIdentifier("HomeVC") 
mainNavigationController = UINavigationController(rootViewController: homeInstance) 
mainNavigationController?.navigationBar.hidden = true 
self.window?.rootViewController = mainNavigationController 


//Appdelegate code didFinishLaunching 
if getUserDefault("isUser") == "YES" { 
     let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
     let homeInstance = mainStoryboard.instantiateViewControllerWithIdentifier("HomeVC") 
     mainNavigationController = UINavigationController(rootViewController: homeInstance) 
     mainNavigationController?.navigationBar.hidden = true 
     self.window?.rootViewController = mainNavigationController 
} 
else { 
     mainNavigationController = window!.rootViewController as? UINavigationController 
} 
0

當點擊登錄按鈕,你必須有推視圖控制器到另一個畫面。

嘗試設置視圖控制器,而不是推的:

func Login(){ 
    let control = storyboard!.instantiateViewController(withIdentifier: identifier) 
    navigationController?.setViewControllers([control], animated: true) 
} 
0

如果你推新的控制器,然後代替推嘗試添加到keywindow這樣。那麼您將不會被重定向到之前的窗口。

let homeStoryBoard = UIStoryboard(name: "Main", bundle: nil) 
    let vc = homeStoryBoard.instantiateViewController(withIdentifier: "HomeViewController") as? HomeViewController 
    let appDelegate = UIApplication.shared.delegate as! AppDelegate 
    if let window = appDelegate.window { 
       window.rootViewController = vc 
       window.makeKeyAndVisible() 
    }