Расширение UIViewController с другим файлом NIB - PullRequest
0 голосов
/ 15 февраля 2011

Хорошо, я определенно делаю что-то здесь не так ...

Я создал BaseViewController, который является источником данных и делегатом соответствующего файла NIB, содержащего UITableView.Этот контроллер в значительной степени отвечает за получение данных от удаленного веб-сервиса, создание ячеек и заполнение UITableView.

Итак, теперь я хочу создать SearchViewController, чтобы я мог получить UISearchBar, который пользователь можетвведите поисковый запрос, опубликуйте его в веб-службе, получите результаты и заполните UITableView.

Однако большая часть кода (при получении данных / заполнении UITableView) существует в BaseViewController.Поэтому первое, о чем я подумал, - это создать SearchViewController как расширение BaseViewController с другим файлом NIB.

Я создал новый NIB-файл под названием SearchView, содержащий UISearchBar и UITableView, и связал их с IBOutlets для владельцев файлов.(UITableView IBOutlet наследуется от BaseViewController)

Итак, наконец, в своем MainWindow.xib я добавил TabBarController, а из IB я связал UINavigationController для загрузки SearchViewController с View, загружаемым из SearchView.Когда я переключаюсь на вкладку поиска, я получаю SIG_ABORT с ошибкой:

-[UITableViewController loadView] loaded the "SearchView" nib but didn't get a UITableView

Может ли кто-нибудь указать мне правильное направление, как действовать?Я уверен, что большинство из вас, делающих вещи с UITableView, повторно использовали код, расширяя класс.Это правильный подход?

1 Ответ

0 голосов
/ 15 февраля 2011

Я не уверен, что точно следую вашему описанию, но я думаю, что вы должны сделать, это создать ваш SearchViewController как подкласс BaseViewController, например

@interface EventListViewController : UIViewController { ... }

Это то, что вы подразумеваете под расширением"BaseViewController?

А затем вы используете [[SearchViewController alloc] initWithNibName:@"SearchView" bundle:nil] для создания SearchViewController?Обычно я обрабатываю начальную загрузку моих приложений программным способом в делегате приложения.

Полученная вами ошибка звучит так, будто ваши соединения IBOutlet неверны.Жаль, что вы не можете опубликовать файл пера здесь так же легко, как вы можете написать код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...