2011-03-29 58 views
1

iPhoneiPhone:UINavigationController使用後刪除堆棧中的第一個視圖

我有一個UINavigationController,它有一個應用程序加載後出現的loginview。

一旦用戶點擊登錄,我們將下一個視圖推入堆棧並顯示。我希望用戶無法返回到登錄視圖。

如何在加載下一個視圖後從堆棧中刪除loginview?

注:這是一個要求,即應用程序的唯一的容器是一個UINavigationController

回答

0

我發現,只需設置ViewControllers屬性時,會做的伎倆。

(我們使用C#和.NET來構建iPhone應用程序使用MonoTouch的)

public override void ViewDidAppear (bool animated) 
{ 
    NavigationController.ViewControllers = new UIViewController[] { this }; 
} 
0

通過設置backButtonItem,在登錄控制器的navigationItem,以零刪除後退按鈕。

1

您可以使用setViewControllers:動畫:修改控制器堆棧,但我鼓勵你重新考慮你是否真的想讓你的登錄視圖控制器成爲你的導航棧的根。當用戶看到一個導航控制器時,他們希望能夠上下瀏覽以樹狀結構組織的屏幕層次結構。改變那棵樹的根在一定程度上削弱了這個隱喻。

考慮使用模態演示來傳達登錄體驗超出應用主分層導航結構的事實。這裏有幾個選項:

A.從登錄視圖控制器開始,並以模態方式顯示導航控制器。

如果您的登錄視圖控制器始終是用戶看到的第一個屏幕,您可以將其視圖直接添加到窗口中,而無需導航控制器。然後,一旦用戶登錄,創建導航控制器並通過從您的登錄視圖控制器調用presentModalViewController:animated:來呈現它。 B.使用其真實根目錄初始化導航控制器,並以模態方式顯示登錄視圖控制器。

如果登錄提示不總是用戶看到的第一個視圖,尤其是如果登錄提示可以在其他上下文中彈出,則此選項可能值得考慮。例如,我在一個允許用戶在離線或匿名訪問某些部分的應用程序中使用了這種方法。當用戶嘗試訪問需要認證的內容時,登錄提示將以模態方式呈現。

0

使用NSUserdefault設置布爾校驗值來驗證顯示登錄頁面或下一頁

例如當登錄頁面U將得到的用戶名密碼,然後將其發送到服務器和u將收到的結果是成功還是失敗

如果成功,則在NSuserdefault中將Bool設置爲是

並在成功登錄後推入nextview。

如果下一次用戶來烏爾應用u必須根據u可以推nextviewcontroller或登錄頁面先看看NSuserdefault爲布爾值

就是這樣。

在nsuserdefaultü可以succesfull登錄後指定密鑰,而不是布爾

集isLogined爲yes

NSUserDefaults *std = [NSUserDefaults standardUserDefaults]; 

[std setObject:@"yes" forKey:@"isLogined"]; 

如果沒有設置NO

之前推登錄頁面驗證,如果isLogined yes or no

根據你的需求可以推送登錄頁面或下一頁

要驗證

[std stringforkey:@「isLogined」];