Xcode Storyboard: не удается добавить View для ViewController - PullRequest
0 голосов
/ 16 апреля 2019

Я использую Xcode 10 (с Swift 5 и для iOS 12), и мое приложение в настоящее время настроено так:

  1. UIViewController 1 (экран входа в систему) - segue12 to ->
  2. NavigationController, который автоматически создал
  3. UIViewController 2 с UITableView - segue23 до ->
  4. UIViewController 3 (подробная информация об элементе вUITableView с автоматически созданной кнопкой "назад")

enter image description here

* NavigationBar содержит только "".

Теперь я хочу добавить еще один UIView с кнопкой под UITableView, но XCode не позволит мне перетащить его под UITableView, только либо в UITableView, либо непосредственно под «Первым ответчиком», что ставитПросмотр снаружи в собственное окно.

Если я удалю «My Table View», он также не даст мне перетащить замену.

Как это исправить, чтобы я могдобавить новый UIView + UIButton?

1 Ответ

1 голос
/ 16 апреля 2019

NavigationController, который автоматически создал UIViewController 2

Это все объясняет.Когда вы перетаскиваете контроллер навигации в раскадровку, вы получаете контроллер навигации и его корневой контроллер представления, а контроллер корневого представления - UITableViewController.

Давайте на шаг вернемся.Контроллер представления может и должен иметь ровно один основной вид.Он занимает всю сцену.Это не может быть изменено.Он не может иметь одноуровневое представление, потому что у него нет супервизии, для которого одноуровневое представление является дочерним.У него могут быть только дочерние элементы (подпредставления).

Что ж, в этом случае ViewController2 является UITableViewController, а MyTableView является основным представлением ViewController2.(Контроллер табличного представления всегда настраивается таким образом, и это то, что вы получили, когда перетаскивали контроллер навигации в раскадровку.) Именно поэтому вы не можете добавить к нему больше представлений, кроме как в виде подпредставлений, например содержимого прототипа ячейки.Вашей кнопке некуда идти, кроме внутри табличного представления.

Итак, что делать?

  • Если вам нужен дополнительный интерфейсДобавить - это просто кнопка, обычное решение - поместить ее в панель навигации .Он становится частью элемента навигации контроллера табличного представления.

  • Если вы не хотите этого делать, то есть действительно хотите, чтобы кнопка и табличное представление были родственными элементамидруг друга в интерфейсе - тогда вам нужно заменить сам ViewController2 на обычный контроллер представления.Теперь его основной вид будет обычным, и вы можете перетащить в него все что угодно, в том числе вид таблицы и кнопку.Скорее всего, вместо пустого табличного представления вы бы использовали контейнерное представление , с embed segue для контроллера табличного представления.

...