'создан экземпляр контроллера представления с идентификатором "" из раскадровки "Main", но не получил UITableView при попытке модального представления контроллера представления - PullRequest
0 голосов
/ 30 мая 2020

Я пытаюсь отобразить табличное представление внутри представления контейнера, которое само является частью контроллера представления. Вот мой HomeScreenViewController, у которого есть кнопка, которая переходит в BroadcastSearchViewController.

Home Screen View Controller

Однако, как только я нажимаю кнопку, я получаю следующую среду выполнения ошибка. Зачем? Что я могу сделать, чтобы это работало? Мне нужно как-то изменить свой дизайн?

Terminating app due to uncaught exception 'NSInternalInconsistencyException', 
reason: '-[UITableViewController loadView] instantiated view controller with identifier 
"UIViewController-OSu-KC-K41" from storyboard "Main", but didn't get a UITableView.'

Вот как мой BroadcastSearchViewController выглядит в раскадровке. Он отображается модально при нажатии кнопки поиска.

enter image description here

А вот как выглядит мой контроллер табличного представления, встроенный в представление контейнера:

enter image description here

BroadcastSearchViewController.swift

class BroadcastSearchViewController : UIViewController {

    @IBOutlet weak var broadcastSearchBar: UISearchBar!
    @IBOutlet weak var broadcastSearchSegmentedControl: UISegmentedControl!

    override func viewDidLoad() {
        super.viewDidLoad()
    }

}

BroadcastSearchResultsTableViewController.swift

class BroadcastSearchResultsTableViewController : UITableViewController {

    let datasource = BroadcastSearchResultsTableViewDataSource()

    override func viewDidLoad() {
        datasource.broadcasts = [
            Broadcast(
                song: Song(id: "1", title: "November Rain", artist: "Guns N' Roses"),
                user: User(username: "sylphrenetic")
            ),
            Broadcast(
                song: Song(id: "2", title: "How To Disappear Completely", artist: "Radiohead"),
                user: User(username: "sylphrenetic")
            )
        ]
        self.tableView.dataSource = datasource
        self.tableView.reloadData()
    }

}

1 Ответ

0 голосов
/ 30 мая 2020

В итоге я выяснил это из этого ответа на другой вопрос. Следуя этим шагам, я понял, что мне нужно удалить контроллер представления по умолчанию и заменить его новым контроллером представления таблицы вручную, вместо того, чтобы просто установить контроллер представления в качестве контроллера представления таблицы. Сначала это сбивало с толку, но теперь это имеет смысл, поскольку UITableView не может быть внутри UIView.

...