2012-06-26 71 views
0

我做一個程序,它顯示了一個表。這是添加視圖的正確方法嗎?

如果人們點擊搜索,我會添加覆蓋原來的另外一個觀點。原始視圖是[BNUtilitiesQuick listnewcontroller];

[[BNUtilitiesQuick window] addSubview:[BNUtilitiesQuick searchController].view]; 

[[BNUtilitiesQuick searchController] viewWillAppear:YES]確實被稱爲。如此看來,UIView的有一個指向它的控制器

然而,認爲[[BNUtilitiesQuick listnewcontroller] viewWillDisappear]不叫

此外,[[BNUtilitiesQuick listnewcontroller] viewWillAppear]即使用戶已經完成修改搜索詞與此代碼也沒有叫:

[self.view removeFromSuperview]; 

我想我可能失去了一些東西。無論如何我應該做什麼,所以IO知道searchController.view將覆蓋listNewController?

回答

1

這是不這樣做的正確方法。如果searchController是一個全屏幕控制器,你應該有模式目前它使用presentViewController或將其推送到導航堆棧@StuR建議。

如果你的搜索視圖只包括你應該在iOS5中使用圍堵API的listnewcontroller的一部分。

內listnewcontroller(父視圖控制器),你可以這樣寫:

[self addChildViewController:self.searchController]; 
[self.view addSubview:self.searchController.view]; 
[self.searchController didMoveToParentViewController:self]; 

對於更深入的信息,請查閱WWDC 2011會話視頻「實施的UIViewController遏制」。同時觀看2012年的「iOS上視圖控制器的演變」,因爲iOS6中有一些變化和棄用。

0
ViewController *viewController = [[ViewController alloc] init];  
[self.navigationController pushViewController:viewController animated:YES]; 

我會考慮使用pushViewController來添加全屏視圖。 addSubview用於不覆蓋整個屏幕的視圖。

+0

然而,外navigationcontroller新searchis。 –

0

viewWillDisappear和viewWillAppear只會在我彈出或推送給定的viewController時調用。你很簡單地在當前viewController的內部(頂部)添加一個子視圖和它自己的viewController。正如StuR所說,如果你想關閉當前的ViewController,你應該使用:

BNUtilitiesQuick * searchController = [BNUtilitiesQuick alloc] init]; [self.navigationController pushViewController:searchController animated:YES];

你可以閱讀更多關於ViewControllers這裏:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007457

相關問題