![](/img/trans.png)
[英]iPhone SDK: Switching to one view then back to previous view errors
[英]Iphone UIView switching: Previous view's subviews polluting newly switched-to view
我已經工作了一段時間來切換UIViews,我正在嘗試一個基本的UIView開關,而不使用UINavigationController。 我已經研究過UINavigationControllers了,但是我已經和下面的人搏斗了很長時間以至於我想完全探索它。
我的項目組織是:
MainViewController.h/.m -> viewDidLoad: This method runs a NSTimer to update self.view with a few bits and bobs.
ConfigView.h/.m: -> viewDidLoad: nothing - just an idle view.
MainViewController.xib -> Main window NIB
ConfigView.xib -> ConfigView NIB
我在MainViewController.m中有以下方法在UIButton按事件上執行:
- (IBAction)switchToConfigView:(id)sender {
if(self.configViewController == nil) {
ConfigView *cv = [[ConfigView alloc] initWithNibName:@"ConfigView" bundle:nil];
self.configViewController = cv;
[cv release];
}
[self.view addSubview:configViewController.view];
}
現在,當我切換到ConfigView時,確實顯示了視圖,但看起來仍然執行來自MainViewController的viewDidLoad:導致兩個視圖有效地合並。 從代碼中,我可以看到顯然是這種情況,因為實際的視圖切換本身是在MainViewController上下文中執行的,正如您所看到的,只是一個子視圖。
我的問題是,當通過向其添加另一個子視圖來切換視圖時,如何巧妙地收集/暫停MainViewController中的所有內容? 我的猜測是,這是不可能的,或者更確切地說是一些其他方法可以更好地應用的大量工作。 我懷疑我需要從ConfigView.h / .m實現實際的切換,但我可能是錯的。
任何你可以在上面流下的光都是盛大的。
謝謝
瑞士芝士。
相信我在另一個視圖上添加一個全新的子視圖真的是一個巨大的任務,后來當項目變大時,切換視圖變得很痛苦。
這是我個人的經歷,因為我在之前的一個項目中犯了這個大錯誤。
在所有情況下,導航控制是切換視圖而不是添加子視圖的最佳選擇。
請告訴我你在導航控制方面遇到了什么困難,我可以幫忙解決這個問題。
謝謝,
我的建議是:
1)有一個基礎,空視圖;
2)添加子視圖; 這將是你實際的第一個觀點;
3)當你想切換時,從基本視圖中刪除第一個子視圖,並將第二個子視圖添加為子視圖;
4)當你想要切換回來時,刪除第二個並將第一個作為子視圖添加到基本視圖;
您可以輕松處理任意數量的視圖。 有用。
或者,您可以隱藏視圖而不是刪除它。
如果您在MainViewController的viewDidLoad
方法中設置的NSTimer是使用addSubview
方法將子視圖添加到mainViewController的視圖,那么這些視圖將被放置在所有其他子視圖的頂部,即在配置視圖的頂部。 因此,您可以嘗試在顯示配置視圖時使計時器無效。
您應該只使用UINavigationController
,或使用presentModalViewControllerAnimated
顯示配置視圖控制器。 你為什么不想?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.