2012-03-11 58 views
0

我正在做的是創建一個登錄屏幕作爲第一頁。一旦您登錄並且它在服務器上驗證您,它將清除登錄字段,並且它會延續到主屏幕。該屏幕有一個我已經給出文本註銷的後退按鈕。單擊它可以將您帶回登錄屏幕,並且由於登錄按鈕會在服務器之前對服務器進行驗證,所以它基本上看起來像是在註銷。試圖瞭解segues,內存管理和最佳實踐

但是,我想每個頁面上的註銷按鈕。我的想法是在其他屏幕的導航欄上添加一個按鈕。作爲測試,我在幾個級別的屏幕上添加了一個註銷按鈕,並將一個segue添加回登錄屏幕。我更新了頁面上的標籤以查看它是否返回到同一頁面。當它回到登錄屏幕時,標籤變爲空白,導致我相信我沒有回到登錄屏幕,而是創建了一個新的登錄屏幕。我如何註銷並基本回到開始?

我對此有何看法?或者對此有最佳做法嗎?

回答

1

每次通過segue轉換到新的視圖控制器時,您正在創建目標視圖控制器的新實例。所以是的,如果你使用segue回到登錄屏幕,你會在導航堆棧中添加更多的視圖控制器。

這聽起來像你正在使用UINavigationController。如果是這樣,您可以使用方法popToRootViewControllerAnimated:從導航堆棧中刪除所有視圖控制器並返回到根(這是您的登錄視圖控制器)。當其他視圖控制器從導航堆棧中移除時,它們將被解除分配,並且不會產生您描述的最終內存問題。

// do this when the user clicks your Logout button 
[[self navigationController] popToRootViewControllerAnimated:NO];