2009-06-12 44 views
0

我對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」?

感謝您的幫助提前。

回答

0

好,你必須先刪除原來的視圖,插入新子視圖之前,做這種方式

- (IBAction)showChildView:(id)sender { 
    if (self.childViewController == nil) { 
     ChildViewController *childController = [[ChildViewController alloc] initWithNibName:@"ChildView" bundle:nil]; 
     self.childViewController    = childController; 
     [childController release]; 
    } 
    [self.mainViewControlle.view removeFromSuperView]; 
    [self.view insertSubview:childViewController.view atIndex:0]; 
} 

希望這有助於。

+0

由於這個函數,「showChildView:」在「MainViewController.m」中定義,將「[self.mainViewController.view removeFromSuperView]」的消息工作?當我使用這行代碼構建項目時,它會產生編譯器錯誤:「請求成員'mainViewController'的東西不在結構或聯合中。」 不知道這裏發生了什麼? – sungl 2009-06-12 05:51:00

+0

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

0

您可能想查看實用程序應用程序示例 - 它演示了使用動畫在兩個視圖之間切換以及從父視圖添加/刪除視圖。

+0

謝謝你的提示!它看起來非常有幫助。 :) – sungl 2009-06-12 06:00:12

0

你可能想要在主視圖中創建一個導航控制器,並在調用showChildView時將childviewcontroller推到它上面。你會得到這個免費的後退導航按鈕

+0

謝謝。這是另一個好主意! – sungl 2009-06-12 06:00:55

相關問題