Загрузка подкласса UINavigationController из пера - PullRequest
1 голос
/ 03 января 2011

Моя ситуация выглядит следующим образом: Мой класс SettingsViewController является подклассом UINavigationController. Этот класс содержит логику его rootViewController. Например, он действует как делегат и источник данных для двух табличных представлений в этом корневом контроллере представления.

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

Но я хочу загрузить это корневое представление через перо. Проблема в том, что я не знаю, как соединить этот Nib с моим SettingsViewController, как настроить делегатов и источники данных. SettingsViewController не доступен из пера. «Владелец файла» представляет собой контроллер корневого представления, а не SettingsViewController.

Как получить доступ к моему подклассу UINavigationController из моего корневого представления контроллеров Nib?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 03 января 2011

вы можете объявить представление внутри пера и установить его для класса SettingsViewController (если это представление).

или перетащите контроллер представления в IB и установите его для типа класса SettingsViewController

// РЕДАКТИРОВАТЬ: поэтому вы хотите представить вид, как MFMailComposerViewController. У меня также есть MessageViewController в моем приложении, которое делает почти то же самое:

MessageViewController *mView = [[MessageViewController alloc]initWithNibName:@"MessageView" bundle:nil];
mView.navController = [[UINavigationController alloc] initWithRootViewController:mView];
[masterView presentModalViewController:mView.navController animated:YES];
[mView release];

обратите внимание, что navController - это UINavigationController, который подключен в IB к контроллеру навигации.

1 голос
/ 03 января 2011

У вас не будет доступа к объектам, не принадлежащим вашему владельцу файла, в вашем кончике. Вам нужно будет настроить эти свойства программно после загрузки вида из этого пера; Ваш rootViewController может установить делегаты и источники данных своих таблиц в своем -viewDidLoad.

Кроме того, я должен спросить, почему вы подкласс UINavigationController. Ссылки на классы предупреждают вас, что «Этот класс не предназначен для создания подклассов». Вероятно, есть лучшее место для вашей логики делегата / источника данных, если это все, что вам нужно для этого SettingsViewController.

...