2016-02-17 34 views
0

我有一個應用程序(帶有UITabBarController),可以通過兩個選項卡訪問最終付款視圖,每個選項卡都有自己的NavigationController。
(插圖只顯示有問題的兩個標籤)重置當前的NavigationController並顯示另一個標籤

當付款成功後,我想重置既NavigationControllers和當前選項卡1.

如果我是在標籤1我可以使用此代碼:

self.navigationController?.popToRootViewControllerAnimated(true) 

但如果我是在片2只讓我在片2 navigationController第一的viewController ...

我可以如何呈現的另一個選項卡,同時還重置Ì導航nController我在(和其他人)?

任何幫助,非常感謝。謝謝 !

enter image description here

回答

0

有可能在一定程度上哈克的方式這樣做的方法,但我會建議你的是,你重新考慮你的流量時,你會問自己這樣一個問題。每個UITab被設計用來存放一個UINavigationView,它是獨立的,獨立於其他UITab元素。如果您強制重置您不在的選項卡,那麼您正在打破流程並混淆用戶。

因此,我建議您將您的Payment ViewController推送到應用程序所需的任何位置。並且不要混淆其他Tabs狀態。

+0

嗯,讓我換個角度來看,如果用戶通過標籤2成功付款,那麼我想重置那個navbarcontroller,並向用戶顯示他在另一個標籤上的「待處理訂單」。如何重置我當前的navigationController(屬於標籤2的那個),然後呈現另一個標籤(比如標籤1)? – KML

+0

你不會以編程方式跳轉標籤頁。應該由%100個用戶控制。這就是它的設計目的。但是如果你必須的話,我想你可以在你當前的標籤上調用popToRootViewControllerAnimated(true),一旦它完成導航到另一個標籤,如:self.tabBarController.selectedIndex = n;畢竟你從導航的任何地方訪問你的UITabBarController。 – dorian

+0

嗯,那樣會很不體面,用戶會注意到「雙重放鬆」。不要認爲這很難或不常見,我只是想在用戶成功付款後向用戶顯示他的當前訂單,這一切。我認爲用戶希望一旦完成支付就完成並重置。 – KML

1

1)創建自定義UITabBarController或使該有一個名爲類似方法的類別:completePayment()

- (void) completePayment 
{ 
    [self setSelectedIndex:n] // n is the index of your destination tab 
    [[[self viewControllers] objectAtIndex:m] popToRootViewControllerAnimated: YES]; // reset the stack in the current tab 
} 

2)觸發從視圖控制器這種方法的paymant是這樣完成的:[self.tabbarController completePayment];

3)利潤!

相關問題