#objective-c #ipad #uiviewcontroller #uitableview #uisplitviewcontroller
#objective-c #iPad #uiviewcontroller #uitableview #uisplitviewcontroller
Вопрос:
Я хочу эффект UISplitViewController, однако я не использую шаблон split view.
Это относительно легко достичь без шаблона? И с использованием обычного UIViewController?
Что я хочу, чтобы это был UITableView обычного размера и расположения, который затем имеет детальный вид обычного размера, который затем, конечно, переходит во всплывающее окно и детальный вид при портретном изображении.
Ответ №1:
Делая это без Interface Builder, вы бы создали класс UIViewController. В методе viewDidLoad этого класса создайте UIView или UITableView с исходным кодом кадра, где вы хотите, и желаемым размером. (Освободите его в методе viewDidUnload.) Затем установите self.view UIViewController в UIViewController, чтобы указать на это новое представление.
self.view = [[UIView alloc] initWithFrame:...]; // edit - added in response to your question
Если вы создали UIView, то вы захотите поместить свой UITableView в это новое представление. (Этот подход позволяет добавлять дополнительные элементы в пользовательский интерфейс контейнера, если вам нужно.)
Убедитесь, что ваш UIViewController поддерживает протоколы UITableViewDelegate и UITableViewDataSource. Добавьте методы делегата и источника данных, и все должно быть готово.
Это новое представление может охватывать другие представления, или вы можете настроить другие представления так, чтобы они помещались рядом с ним. Вам нужно только установить там фреймы в соответствии с тем, что вы хотите с ними делать.
При использовании UITableViewController существуют некоторые ограничения, поэтому многие люди рекомендуют вместо этого использовать UIViewController. как я описал выше. Вы можете найти в Google дополнительную информацию по этой теме.
Комментарии:
1. «Затем установите self.view UIViewController в UIViewController, чтобы указать на это новое представление». Каким образом указать на новое представление? Я уверен, что понимаю, что вы сказали иначе, поэтому я просто следую коду, указанному в шаблоне, с дополнительной настройкой, о которой вы упомянули, и я там, верно?
2. Смотрите Мое редактирование в моем первоначальном ответе. Это должно помочь. Если вы используете IB, я полагаю, это автоматически делается для вас, если вы все правильно подключаете. Я предпочитаю сам исправлять код, чтобы я мог видеть все хуки в своем коде.
Ответ №2:
Просто создайте новый временный Xcode-проект из этого шаблона и судите сами, если это сложно для вас, чтобы адаптировать ваш (реальный) код.
Ответ №3:
ДА. Вы можете сделать это довольно легко. Просто используйте делегаты для передачи сообщений между левым и правым боковыми представлениями (root и detail). Например, метод didSelectRowAtIndexPath TableView может использоваться вместе с делегированием для передачи сообщения в правостороннее подробное представление. Коснитесь ячейки в левой таблице, отобразите ее текст в виде метки с правой стороны. Это всего лишь простой пример. И да, вы также можете обрабатывать повороты и отправлять вид слева в UIPopoverController, тем самым предоставляя полноэкранный режим просмотра деталей в портретной ориентации.
Также попробуйте MGSplitViewController. Это дает вам множество других вариантов настройки контроллера с разделенным представлением.