2013-03-10 2 views
0

Я постараюсь сделать собственный popover (на iPhone, iOS6), и мне нужно показать ViewController в подвале других ViewController. Все в порядке - я создал класс ViewController с интерфейсом XIB и добавил одну кнопку и связал действие, которое возвращает NSLog. Я загружаю это ViewController следующим образом:Как работать с ViewController с учетом другого ViewController?

PopoverViewController *popover = [[PopoverViewController alloc] initWithNibName:@"PopoverViewController" bundle:nil]; 

[self.view addSubview:popover.view]; 

Это работает - view из PopoverViewController виден на ViewController, но когда я нажал кнопку, которая является подтаблицей из PopoverViewController тогда у меня EXC_BAD_ACCESS ошибки в строке:

0x3968a5b0: ldr r3, [r4, #8] 

Как с этим справиться и как правильно отобразить второй контроллер?

Благодарим за помощь.

+1

Вы используете ARC? Скорее всего, диспетчер представлений 'popover' освобождается, потому что вы нигде не ссылаетесь на него. – rmaddy

+0

Что такое действие кнопки? Скорее всего, вы связали это с несуществующим действием. – Rikkles

+0

Я использую ARC и действие существует. –

ответ

2

Если вы используете ARC, и вы не держите ссылку на PopoverViewController, тогда контроллер просмотра будет освобожден, даже если вы добавите его вид в другое представление. Затем, когда вы нажимаете кнопку в представлении popover, цель кнопки исчезает, и приложение падает.

Либо добавьте переменную экземпляра, чтобы сохранить ссылку на PopoverViewController или еще лучше, обновите код контроллера вашего вида, чтобы правильно быть контроллером представления контейнера. Вы действительно не должны просто добавлять один вид контроллера представления к другому представлению контроллера. См. Документы для UIViewController для правильного способа создания контроллера представления контейнера.

+0

Спасибо, я прочитаю об этом. –

+0

Я объявлял объект класса PopoverViewController' в интерфейсе ViewController и теперь работает. –