Сбой UITableViewController.view - PullRequest
       5

Сбой UITableViewController.view

2 голосов
/ 26 ноября 2009

Поэтому я пытаюсь использовать UITableViewController (назовем его homeView) в своем приложении для iPhone, чтобы отобразить простую таблицу с несколькими строками текста, которые загружаются из NSArray в контроллер. Я хочу отобразить таблицу в сгруппированном стиле в подпредставлении подпредставления (назовем его subSubView) моего основного контроллера. Когда я пытаюсь сделать следующее: [subSubView addSubview: homeView.view], мое приложение вылетает при запуске. Однако, когда я размещаю объект, не добавляя его к каким-либо представлениям, он запускается нормально.

Каков наилучший (или, скорее, рабочий) способ отображения таблицы, сгенерированной моим UITableViewController?

1 Ответ

2 голосов
/ 26 ноября 2009

Недостаточно точно сказать, что происходит, но если бы мне пришлось угадывать, я бы подумал, что вы, вероятно, не сохраняете homeView. Обычно я бы сказал это в качестве комментария к вашему вопросу, поскольку это не совсем ответ, но у меня есть совершенно отдельный ответ:

Просто используйте UITableView, а не UITableViewController. Вместо того, чтобы пытаться встроить контроллер в контроллер (что довольно сложно, поскольку Apple не предоставляет необходимых инструментов для фактического изменения иерархии контроллера представления), просто сделайте так, чтобы пишущий VC поддерживал соответствующие методы делегата / dataSource и непосредственно создавал вид.

Хотя может быть логичным попытаться встроить виртуальные каналы друг в друга, за исключением встроенных контейнерных контейнеров (UINavigationController, UITabBarController), это действительно не работает ™, Техническая причина этого заключается в том, что внутренняя часть маршрутизации событий и обмена сообщениями зависит от правильности parentViewController, но, поскольку вы не можете установить его (setParentViewController: is private), тонны скрытых ошибок в UIKit начинают поднимать голову. Внутренние классы коллекции могут правильно устанавливать parentViewController, поэтому все работает правильно.

Кроме того, последнее. В своем вопросе вы назвали свой контроллер вида homeView. Пожалуйста, пожалуйста, не делайте этого. Контроллер представления и представление - это разные вещи, назовите это homeViewController. Помимо того, что многие новые разработчики для iPhone не понимают, в чем заключается различие, нет ничего более усугубляющего, чем прослеживать чужой код и осознавать, что вы предполагаете, что один тип - это другой.

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