2017-02-08 39 views
-1

我從事iOS項目已經有一段時間了,我正在努力應對與UINavigationController相當的基本概念。在UINavigationController中的3個不同視圖之間導航(push/pop)的正確方法

我有我的故事板下面設置:

  • 導航控制器
    • 視圖1:登錄查看(根)
    • 查看2:註冊查看
    • 查看3:驗證查看

我的項目流程要求用戶在註冊視圖中註冊一個帳戶後,他們將被帶到驗證視圖。我的項目流程還要求我顯示驗證視圖,如果用戶從根視圖登錄並且他們沒有驗證他們的電子郵件地址。

重要的是,如果用戶在驗證視圖中按下它們總是被帶到登錄(根)視圖,則永遠不會註冊視圖。

我已審查了以下問題:

以及許多其他人卻沒有找到一個很好的經驗規則是這樣的情況。我期望最好的行動方式是從註冊視圖(Pop)返回到根視圖,然後告訴根視圖移動到使用segue的驗證視圖,但在註冊視圖中的[self parentViewController]似乎給我UINavigationController。

我的問題是這樣的:什麼是正確的流程在這裏使用?在故事板CTRL +拖動從VC對象到退出

- (IBAction)unwindFromVerification:(UIStoryboardSegue *)segue { } 

在驗證VC和選擇創建的方法,包括:

+0

Downvoter,care to comment? –

回答

2

在登錄VC添加展開方法。設置該展開賽格的標識符(例如「UnwindFromVerification」)。然後,在驗證VC每當你需要放鬆,你只需要調用

[self performSegueWithIdentifier:@"UnwindFromVerification" sender:nil]; 

然後,只需設置hidesBackButtonYES覈查視圖的navigationItem並用自己的替換它。另一種解決方案是完全隱藏導航欄,以便用戶無法通過從左邊緣向右滑動來放開。

+0

感謝您的回答。我很希望找到一個仍然可以使用UINavigationController創建的自動創建的導航欄和後退按鈕的解決方案。這樣的方式是否存在或是您的答案標準做法? –

+0

我不知道我的做法是多麼「標準」。我通常會在兩個不同的VC中登錄和註冊,這些VC不在同一個「UINavigationController」堆棧中。) – Eimantas

1

Q2

重要的是,如果用戶在確認畫面按回,他們總是採取登錄(根)視圖中,從來沒有寄存器視圖。

使用popToRootViewControllerAnimated:YES它導航到登錄VC

[self.navigationController popToRootViewControllerAnimated:YES]; 

你另一個問題

我的項目流程還需要我展示了確認畫面,如果從根視圖在用戶登錄並且他們還沒有驗證他們的電子郵件地址

答案:

在登錄VC創建一個bool userdefault,檢查bool == false,直接導航到驗證視圖,驗證VC,如果一切正常bool == true,否則如果用戶是新的導航到註冊查看其他導航到主VC。

+0

感謝您的回答。您是否建議我從登錄或註冊移動到驗證,然後覆蓋驗證中的後退按鈕以始終彈出到根目錄?這似乎是一個很好的解決方案。 –

+0

@LukePark - yes abosultely –

+0

謝謝。我可能會實現這一點,因爲這意味着我可以保留默認的後退/導航欄。 –

相關問題