Мне, наконец, пришлось отказаться от неустанного поиска ответа на этот вопрос, так как я просто не могу найти никого, кто его задавал раньше! Так что надеюсь, что кто-то может дать некоторое представление. Я начну с объяснения того, что я могу сделать, затем сравню это с тем, что я не могу понять, как это сделать.
Предположим, у меня есть собственный VC под названием RootViewController. Он содержит выход типа MyViewController. Мой RootViewController имеет .xib, который содержит универсальный объект VC, перетаскиваемый из палитры IB, которому присвоен тип класса MyViewController. Я установил элемент кнопки правой панели в UIBarButtonItem под названием «Отмена». RootViewController разархивирует его .xib, подключает выход к объекту MyViewController, я помещаю указанный объект в стек навигации, который отображается, как и ожидалось, у меня есть вид и кнопка на панели навигации с надписью «Отмена».
Проблема с этим подходом заключается в том, что я хочу, чтобы MyViewController можно было повторно использовать для любого объекта, который может захотеть создать MyViewController. Следовательно, это означает, что «Владельцем файла» может быть любой объект. Ранее это был RootViewController, но что, если другой объект хотел создать экземпляр MyViewController? Владелец файлов будет отличаться каждый раз. Я также хочу, чтобы он мог полностью инициализировать себя из прекрасно автономного .xib. В основном, я хочу сделать это:
MyViewController *myVC = [[MyViewController alloc] init];
И в реализации MyViewController я пишу это:
- (id)init
{
if ( self = [super initWithNibName:@"MyViewController" bundle:nil] )
{
// Initialisation
}
}
Это аккуратно скрывает имя .xib, используемое для инициализации VC, использует все добро, которое IB дает мне при настройке контроллера и представления, а MyViewController всегда является владельцем, это означает, что я тоже решаю проблему владельца файла - он будет работать для любого типа класса, который его создает.
Итак, чтобы добиться этого, я создаю .xib, устанавливаю владельца файла типа MyViewController, добавляю UINavigationItem и добавляю UIBarButtonItem. Теперь у меня есть .xib структурно такой же, как и раньше, за исключением того, что он не использует универсальный объект VC IB как отдельный объект верхнего уровня, .xib является определением VC, а не чем-то, что содержит определение VC.
Итак, учитывая, что Владелец Файла является MyViewController и как подкласс UIViewController (предположительно, наследует все, что вы получаете, используя UIViewController из палитры IB), тогда я должен унаследовать все функциональные возможности его суперкласса ... За исключением того, что это не «т.
Когда .xib не разархивирован, он не подключает UINavigationItem. Поэтому, когда он помещается в стек навигации, ни один из элементов панели кнопок не отображается.
Свойство UIViewControllers navigationItem доступно только для чтения, поэтому создание выхода для него в iPhone OS 3.0 не рекомендуется.
Итак, в конце концов, как на самом деле код загрузки пера может связать версию объекта VC IB с элементом навигации? И почему, даже если мой объект является UIViewController через наследование, он не будет делать это для моего объекта? Я совершенно не в состоянии понять это ...
Спасибо, что прочитали это далеко! Надеюсь услышать от вас, гуру