2010-01-09 40 views
0

我在我的應用程序中有3個tabbar。在我的Appdelegate中,我有一個loginview的參考,如果用戶沒有登錄,我會彈出loginview。這裏有方法。tabbar應用程序中的loginview問題

- (void)LoginView 
{ 
loginView = [[[LoginViewController alloc] initWithNibName:@"LoginView" bundle:nil] autorelease]; 
UINavigationController* nav = (UINavigationController*)[tabBarController.viewControllers objectAtIndex:0]; 
loginView.navC = nav; [nav presentModalViewController:loginView animated:YES]; 
} 

第三個tabbar是一個設置視圖,我在那裏有一個註銷按鈕。 在第一次我可以看到正確的用戶名,但只要我點擊退出我打電話使用應用程序代理上面顯示的相同的方法。我的問題是
1)這是最好的地方,把登錄視圖
2)我怎麼做得到popedup正確,如果我登錄爲不同的用戶,它仍然顯示以前的用戶名(因爲第三個tabbar視圖已經加載)重置應用程序W/O登錄後重新啓動它
我希望我的問題很清楚。或者我願意提供更多細節。
謝謝。
更新: 基本上我想卸載登出的所有視圖,並從頭開始。

+0

你的代碼格式化搞砸了,請修復它。 –

+0

修復了它。謝謝 – Nnp

回答

0

爲我工作的東西,我希望這是正確的方式來做。這就是我所做的。

NSArray *vc= tabBarController.viewControllers; 
for (int i = 0; i < [vc count]; i++) { 
    UINavigationController *nc = [vc objectAtIndex:i]; 
    if (nc == tabBarController.selectedViewController) { 
     continue; 
    } 
    [nc popToRootViewControllerAnimated:NO]; 
} 

我希望這將從內存中卸載所有的視圖,並迫使他們加載時再次的TabBar越來越switched.let我知道這是不是好辦法。

0

更好的方法是在設置控制器上創建一個公共的changeLoginName:方法,並在用戶登錄時從登錄視圖調用該方法。如果您沒有登錄,則可以通過標籤欄訪問該視圖在其他任何地方保持指針。

+0

感謝chpwn,但我的問題不僅僅是名字,問題是如果我有其他設置,即使那些應該得到改變。我有一個2nb的tabbar作爲購物車。應該得到改變。現在感覺就像loginview一樣,點擊它後雖然它更新了一些數據,但tabbar狀態保持原樣。這個描述是否有意義? – Nnp

+0

然後對需要重新加載的所有內容執行重載方法,然後在所有選項卡上調用該方法。 –

+0

感謝chpwn。你想讓我在登出按鈕點擊或從登錄按鈕點擊'重新加載'在哪裏? – Nnp