2012-02-11 2 views
0

Я представляю modalViewController, который на самом деле является навигационным контроллером с одним видом и настраиваемой навигационной панелью. Модальное представление кажется прекрасным, как ожидалось, но когда я пытаюсь удалить его из представления, используя [self rejectModalViewControllerAnimated: YES], я нажимаю сообщение «- [UINavigationController modalViewController]: отправленное на освобожденный экземпляр». Кажется, это не так. Есть идеи?ModalViewController со встроенным контроллером nav - не удалось уволить

Инстанцирование в ModalViewController:

// Make a navigation controller and add the view inside it 
    MyViewController *evc=[[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; 
    //UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:evc]; 
    UINib *nib = [UINib nibWithNibName:@"UINavigationBarWithBackgroundImage" bundle:nil]; 
    UINavigationController *nvc = [[nib instantiateWithOwner:nil options:nil] objectAtIndex:0]; 
    [nvc setViewControllers:[NSArray arrayWithObject:evc]]; 
    evc.delegate=self; 
    [evc release]; 
    [self presentModalViewController:nvc animated:YES]; 
    [nvc release]; 

и пытается удалить его. Это где ошибка приходит в:

[self dismissModalViewControllerAnimated:YES]; 

ответ

0

Не уверен, но попробовать все равно:

Удалить

[nvc release] 

и посмотреть, если

[self dismissModalViewControllerAnimated:YES]; 

теперь работает.

+0

Это решило его .... очень странно! Я думал, что nvc будет принадлежать родительскому представлению, так как это было модальное представление. Очень странное поведение, но это устраняет проблему. – Steve

0

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

попробовать что-то вроде этого:

// Make a navigation controller and add the view inside it 
MyViewController *evc= [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; 

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:evc]; 

evc.delegate=self; 

[self presentModalViewController:navController animated:YES]; 

[evc release]; 
[navController release]; 
+0

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

+0

Как примечание, если ваше приложение предназначено для iOS 5, существует гораздо лучший способ установить пользовательское изображение на навигационной панели. Взгляните сюда [UINavigationBar Apple Developer Reference] (http://developer.apple.com/library/ios/documentation/uikit/reference/UINavigationBar_Class/Reference/UINavigationBar.html#//apple_ref/doc/uid/TP40006887-CH3 -SW16) –

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

  • Нет связанных вопросов^_^