Почему предварительно определенная ячейка недопустима в Sub viewcontroller?IOS - PullRequest
0 голосов
/ 25 сентября 2018

Существует ViewController в качестве корневого контроллера представления, и я хочу добавить TableViewController в качестве контроллера вспомогательного представления, все эти 2 контроллера предварительно разработаны в Story Board.В раскадровке TableViewController я устанавливаю табличное представление как Динамическое, добавляю 1 пользовательскую ячейку и устанавливаю ее Идентификатор как «cellReuse».

В коде контроллера корневого представления я добавляю TableViewController как Sub ViewController и добавляю его табличное представление какSubview, например:

var vcSubViewController:MyTableViewController
vcSubViewController = MyTableViewController()
vcSubViewController.delegate = self
self.addChildViewController(vcSubViewController)
self.addSubView(vcSubViewController.tableview)

В коде контроллера таблицы:

tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
     ....   
let  cell = self.tableView.dequeueReusableCell(withIdentifier: "cellReuse", for: indexPath)
     ....
    }

, при запуске ошибка показала, что не удается найти идентификатор повторного использования.

Чтобы исправить этопроблема, я должен создать UITableViewCell по коду, кажется, что ячейка, которую я разработал в Story Board, не была реализована. Могу ли я знать, что не так?Ура!

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

EmilioPelaez прав, вам нужно создать экземпляр из раскадровки или xib, чтобы включить идентификаторы, определенные в раскадровке / IB.

if let childVC = UIStoryboard(name: "Something", bundle: nil)
            .instantiateViewController(withIdentifier: "MyTableViewController") as? MyTableViewController {

     childVC.delegate = self
     self.addChildViewController(childVC)
     self.view.addSubView(childVC.tableview)
}
0 голосов
/ 25 сентября 2018

Метод addChild(_:), который вы используете в своем коде, предназначен для вызова системой при использовании контроллера представления контейнера.Вы не можете прямо назвать это так.Вы можете переопределить метод (вызывая из него super), но в целом то, чего вы хотите достичь (насколько я понимаю, вы хотите встроить контроллер представления с представлением таблицы внутри другого контроллера представления), может бытьдостигается с помощью контроллера представления контейнера.

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