我對Obj-C和學習iphone開發很陌生。 我的問題是如何從應用程序委託添加子視圖。 可以說我從「applicationDidFinishLaunching」方法中添加了名爲「MainView」的子視圖。如何從主視圖加載子視圖?
- (void)applicationDidFinishLaunching:(UIApplication *)application {
MainViewController *aViewController = [[MainViewController alloc] initWithNibName:@"MainView" bundle:nil];
self.mainViewController = aViewController;
[aViewController release];
[window addSubview:mainViewController.view];
// Override point for customization after application launch
[window makeKeyAndVisible];
}
「MainView.xib」 文件上有一個按鈕,以顯示其子視圖。當按鈕被點擊時,它調用「showChildView」方法。
- (IBAction)showChildView:(id)sender {
if (self.childViewController == nil) {
ChildViewController *childController = [[ChildViewController alloc] initWithNibName:@"ChildView" bundle:nil];
self.childViewController = childController;
[childController release];
}
[self.view insertSubview:childViewController.view atIndex:0];
}
從這段代碼,當應用程序啓動時,它顯示一個按鈕「MainView」。但是,當我點擊按鈕時,該按鈕仍然可以看到以及「ChildView.xib」文件中的內容。
當我按下按鈕並僅顯示「ChildView」的內容時,如何隱藏「MainView」?
感謝您的幫助提前。
由於這個函數,「showChildView:」在「MainViewController.m」中定義,將「[self.mainViewController.view removeFromSuperView]」的消息工作?當我使用這行代碼構建項目時,它會產生編譯器錯誤:「請求成員'mainViewController'的東西不在結構或聯合中。」 不知道這裏發生了什麼? – sungl 2009-06-12 05:51:00
MyAppDelegate * appDelegate =(MyAppDelegate *)[[UIApplication sharedApplication] delegate]; MainViewController * main =(MainViewController *)[appDelegate mainViewController]; UIWindow * window =(UIWindow *)[appDelegate window]; [main.view removeFromSuperView]; [window addSubview:childViewController.view]; – Zteeth 2009-06-14 03:46:25