Предупреждение UITableViewAlertForLayoutOutsideViewHierarchy генерируется, только если контроллер представления отображается как элемент UITabBarController - PullRequest
0 голосов
/ 21 апреля 2020

Когда приложение запускается, реализуется следующая структура:

Контроллер навигации -> Контроллер панели вкладок -> Контроллер представления

Контроллер просмотра имеет UITableView

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

Контроллер навигации -> Просмотреть контроллер

Больше нет предупреждений. Однако мне нужен этот контроллер панели вкладок. Кто-нибудь сталкивался с подобной проблемой?

Это код View Controller:

enum ChatsCellItemType{
    case group(GroupSyncModel)
}

struct GroupCellItem{
    let type : ChatsCellItemType
}

class ChatsVC: TV2AbstractVC {
    @IBOutlet weak var tableView: UITableView!
    @IBOutlet weak var scrollView: UIScrollView!
    @IBOutlet weak var constContentViewTop: NSLayoutConstraint!

    var chatsService = ChatsService()
    var sections : [[GroupCellItem]] = [
        []
    ]

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        sections = [
            chatsService.fetchMyGroups().compactMap{GroupCellItem(type: .group($0))}
        ]
    }
}

private typealias TableView = ChatsVC
extension TableView : UITableViewDelegate, UITableViewDataSource{
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        guard section < sections.count else {return 0}
        return sections[section].count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        guard indexPath.section < sections.count else {return UITableViewCell()}
        guard indexPath.row < sections[indexPath.section].count else {return UITableViewCell()}
        let item = sections[indexPath.section][indexPath.row]
        switch item.type {
        case .group(let model):
            let cell = tableView.dequeueReusableCell(withIdentifier: "ChatGroupCell") as! ChatGroupCell
            cell.primaryKey = model.groupId
            return cell
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...