Статическое табличное представление вне UITableViewController


159

После нового обновления XCode мое приложение не проверяется и показывает эту ошибку:

статические табличные представления действительны только при их внедрении в экземпляры UITableViewController

Есть ли шансы решить легко?


Зависит от того, почему вы используете подкласс UIViewController вместо UITableViewController.
Дэвид Берри

3
Потому что мне нужны другие элементы внутри представления, которые не принадлежат UITableViewController
Francesco S

1
Испытываю ту же проблему здесь. Просто обновлен (или, как кажется, до сих пор) до Xcode 5.1, и у меня та же проблема. У меня есть несколько статических ячеек в подклассе UITableViewController внутри моего UISplitViewController.
Стефан Арамбасич

У меня тоже начало происходить после обновления. У меня есть некоторые контроллеры представления, построенные со статическими ячейками, это не идеально, но раньше он работал нормально.
Jdmunro

Вам не нужно использовать UITableViewController. Вы получаете эту ошибку, если в вашем UiTableView есть ячейки статического представления таблицы, поэтому я думаю, что одно простое решение - если вам нужны ячейки, не оставляйте их статичными. Просто добавьте делегат табличного представления и источник данных и фиктивные методы UITableViewDelegate
EarlySun

Ответы:


341

Единственный способ получить статический UITableView вместе с другими элементами управления на том же экране - использовать представление контейнера. Следуйте по этому пути, он работает отлично:

  1. Перетащите ViewController на вашу раскадровку.
  2. Перетащите TableViewController на вашу раскадровку.
  3. Затем перетащите представление «Контейнер» в свой ViewController и измените его размер по размеру, который вы хотите (меньше размера представления) -> при перетаскивании представления «контейнер» это создаст переход и другое представление. Снимите этот переход и посмотрите.
  4. Затем, наконец, нажмите Ctrl в вашем контейнере и перетащите в ваш новый TableViewContoller. Выберите Вставить.
  5. Стиль вашего TableView, как вы хотите -> включая статические ячейки.

Удачи.

Этот ответ уже найден и дан здесь: G.Huebner -> http://web.archive.org/web/20140928102504/http://iphonedevsdk.com/forum/iphone-sdk-development/111800-static-table- вид-клетка-только-работа-в-uitableviewcontroller.html


Где взять аутлет или акцию? В UIViewControllerили я должен взять UITableViewController.
Бхавин Рамани

@Bhavin Ramani: Поскольку это UITableViewController в контейнере, я предлагаю взять именно этот класс / подкласс для хранения ваших IBOutlets.
LukeSideWalker

2
Я предполагаю, что вся идея "статических ячеек" реализована таким образом, который зависит от некоторой внутренней функциональности UITableViewController.
Николас Миари

2
Спасибо тебе за это. Можно подтвердить, что это работает в Xcode 8.3.1.
Атхарва Вайдья

Просто восхитительно! Я долго искал это решение.
Джейсон Фолья

8

Статический UITableView должен быть в UITableViewController. Таким образом, вам нужно будет поместить таблицу в UITableViewController, а затем добавить ее в качестве childView в MainViewController.

Вы можете ссылаться на https://iphoneidoit.blogspot.in/2013/10/static-uitableview-in-uiviewcontroller.html.


1
Раньше было много способов обойти это (например, сохранить ячейку), но теперь это ошибка независимо. Я думаю, что вопрос наводит на мысль, есть ли способ подавить ошибку.
Мэтью Книппен

Да, это было К сожалению, я решил проблему с помощью нестатического tableView
Francesco S

1
Хлоп. Количество переделок, которое потребуется для преобразования в нестатическое из-за того, что все IBOutletв моем файле контроллера представления слишком велико, и IMO недопустимо, чтобы обновление сломало это без предупреждения или примечания об этом в журнале изменений ( Поэтому я предполагаю, что все еще совершенно правильно иметь на бумаге UITableViewControllerстатические ячейки внутри А. UISplitViewContollerЯ связался со службой поддержки Apple и получил только не очень полезный ответ по электронной почте, связывающий меня с форумами. Я полагаю, что я попробую там и посмотрю если у кого-то возникнут те же проблемы после обновления
Стефан Арамбасич

4

Я думаю, что вы делаете, вы сначала перетащите ViewController на раскадровку, а затем перетащите tableView на ViewController. Таким образом, вы не можете использовать ячейки статической таблицы. Вместо этого вам следует перетащить TableViewController на основную раскадровку вместо ViewController, а затем выбрать статические ячейки. Таким образом, вы можете работать со статическими ячейками и использовать любые элементы в статических ячейках.


0

Что ж, если вы действительно используете статический tableView, вы должны рассмотреть возможность копирования / вставки всего в ScrollView или StackView.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.