Получите UITableViewCell из UITableView другого UIViewController - PullRequest
0 голосов
/ 21 января 2019

У меня есть UITableView в HomeViewController.Это UITableView имеет один настроенный UITableViewCell в нем.Я хочу использовать тот же UITableViewCell в ListViewController, сняв его с очереди.Ниже код не работает.

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let homeVC: HomeViewController = storyboard.instantiateViewController(withIdentifier: "HomeViewController") as! HomeViewController 
if let homeTableView = homeVC.tableView  {
      // Above homeVC.tableView is becoming nil.
      // Would like to dequeue here.
}

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Вы можете создать файл xib и пользовательский класс UITableViewCell для ячейки, которую вы хотите использовать в нескольких контроллерах представления. Затем в инспекторе идентичности xib определите пользовательский тип ячейки как свой пользовательский класс. Затем зарегистрируйте класс ячейки в каждом контроллере представления, вызвав функцию register для экземпляра tableView в viewDidLoad. Затем удалите вашу ячейку из очереди, реализовав UITableViewDataSource's tableView(_:cellForRowAt:).

0 голосов
/ 21 января 2019

Поскольку я не вижу ваш код HomeViewController, я предполагаю, что свойство tableView связано с Интерфейсным Разработчиком как @IBOutlet weak var tableView: UITableView!.Это означает, что tableView не создается до тех пор, пока вид фактически не появится на экране.Чтобы доказать это, попробуйте поместить точку останова в ваш метод HomeViewConntroller s viewDidLoad() и обратите внимание, что она никогда не достигается.

Чтобы решить вашу проблему, я бы добавил табличное представление в ваш ListViewController,и скопируйте пользовательскую ячейку таблицы из HomeViewController в представление таблицы.Затем создайте пользовательский UITableViewCell и в IB назначьте обе ячейки в HomeViewController и ListViewController в качестве настраиваемой ячейки табличного представления.

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