2010-07-26 80 views
2

多個視圖我開發一個iPhone應用程序,除其他事項外,允許用戶註冊,登錄和遠程Web服務器的註銷。切換使用委託

對於此片的應用功能,我已經定義3個視圖控制器。

  • SignupViewController
  • LoginViewController
  • LogoutViewController

並且每個具有各自的XIB文件。

我希望能夠基於按下哪個按鈕視圖之間切換。例如:

SignupView將有一個註冊按鈕和一個登錄按鈕,如果按下注冊按鈕我想將視圖切換到LogoutView,並且如果登錄按鈕被按下,那麼我想將視圖切換到LoginView。

同樣一個LoginView將有一個登錄按鈕,並且會切換查看LogoutView

而且finallty當LogoutView將有一個註銷按鈕誰的行動將視圖切換至一個LoginView

我一直想到在開發這個過程時需要採取多種不同的策略,但我不確定哪一個是最好的。

一個想法,也可能是最容易實現的就是與在廈門國際銀行文件中定義的三種不同觀點的單一視圖控制器,讓控制器處理的切換。 我有這個方法有些問題,在廈門國際銀行文件將是相當大的,雖然我的控制器邏輯可能會變得非常複雜可能加載緩慢。

第二個想法和我目前的做法是有一個父視圖控制器,它負責切入和切出三個子視圖之一。 我與此具有的問題在於,按鈕操作只能被分配給在當前子視圖控制器的方法。在我的情況下,我需要調用來處理交換機的方法在父控制器中,並且此方法不適用於我的子視圖。

委託似乎完美的答案在這裏,我可以問家長控制器執行的切換方法,但我仍然不能確定爲我如何定義一個委託在我的代碼執行此操作。

任何人都可以幫忙嗎?是否有第三種戰略比代表戰略更好?

回答

1

如果您使用UINavigationController作爲您的根,那麼您可以彈出並推送您想要的任何控制器。所以,你可能會開始是這樣的:

[rootController.navigationController pushViewController: someVC animated: YES]; 

然後,以後,當你想從someVC切換到someOtherVC,你可以這樣做:

UINavigationController *navCon = self.navigationController; 
[navCon popViewControllerAnimated: NO]; // get rid of me 
[navCon pushViewController: someOtherController animated: YES]; // add new controller. 

注:所有的代碼類型在瀏覽器和未經測試,但我認爲你應該從這個想法。

你可以使用委託或通知或其他的東西,但導航控制器上的push/pop事件對於這種視圖棧重新排列非常方便。 注意:如果你不喜歡導航控制器的外觀,你可以隱藏導航欄! :)

+0

是的,它看起來像一個導航控制器是要走的路。感謝您的建議。 – KJF 2010-07-27 10:25:04