Возможно ли программно установить отношения родитель-потомок в коде Objective-C, как это делает файл IB nib?

#iphone #objective-c #unit-testing #interface-builder #nib

#iPhone #objective-c #модульное тестирование #interface-builder #nib

Вопрос:

Я пытаюсь выполнить модульное тестирование некоторого кода контроллера в приложении iPhone. Код, который я тестирую, основан на вызове self.NavigationController, который в моем тесте равен нулю. В реальном приложении контроллер навигации настраивается благодаря тому, что он является родительским для моего контроллера внутри файла nib. Я хотел бы иметь возможность просто установить навигационный контроллер на моем контроллере в моих модульных тестах, но NavigationController является свойством только для чтения. Есть ли способ программно настроить отношения родитель-потомок в моем тесте (точно так же, как это делает файл nib), чтобы метод NavigationController нашел его?

Ответ №1:

 UIViewController *temp = [[UIViewController alloc]init];

UINavigationController *_temp = [[UINavigationController alloc]initWithRootViewController:temp];
  

Это то, что вы ищете?

Комментарии:

1. Возможно. Это все, что на самом деле делает Interface Builder? В документации упоминается поиск по «родительскому» или «предковому» контроллеру навигации. Если вы действительно откроете файл xib, вы увидите разметку, подобную этой: <reference key="IBUIParentViewController" ref="1034742383"/> , что заставляет меня думать, что на самом деле происходит что-то еще…