2009-06-12 3 views
0

Я очень новичок в Obj-C и изучаю развитие iphone. Мой вопрос заключается в том, как добавить subview из делегата приложения. Допустим, я добавил subview под названием «MainView» из метода «applicationDidFinishLaunching».Как загрузить subview с основного вида?

- (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».

Как скрыть «MainView», когда я нажал кнопку и покажу только содержимое «ChildView»?

Спасибо за вашу помощь заранее.

ответ

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]»? Когда я строю проект с этой строкой кода, у него есть ошибка complier: «запрос для элемента mainViewController для члена не в структуре или объединении». Любая идея, что здесь происходит? – sungl

+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

0

Возможно, вы захотите проверить образец приложения Utility - он демонстрирует переход между двумя видами с анимацией и добавление/удаление представлений из родительских представлений.

+0

Спасибо за отзыв! Это выглядит очень полезно. :) – sungl

0

Возможно, вы захотите создать контроллер навигации в главном представлении, а затем нажать на него дочерний контроллер при вызове showChildView. Вы получите бесплатную обратную навигационную кнопку

+0

Спасибо. Это еще одна отличная идея! – sungl

Смежные вопросы