我花了一整天的时间想弄清楚这件事,想了解一下这里发生了什么:
我有一个嵌入在UITableViewController中的自定义navigation controller,它有一个按钮,可以触发一个普通UIViewController的segue。
普通的UIViewController有一个展开到TableViewController的按钮,还有一个“后退”按钮,由于navigation controller而免费提供。
现在的问题是:当我从TableViewController转到UIViewController时,一切都正常。从UIViewController开始,如果我按下“后退”按钮,它将返回并自动重新加载TableView。但是,当我按下链接到@IBAction的按钮来展开时,它会展开到TableViewController但没有显示任何内容,甚至没有空表。
我的调试视图显示,一旦我尝试使用按钮(而不是“back”)展开,TableViewController返回到屏幕上,但它的帧非常小,并且没有任何内容,因此显示的是navigation controller的黑色背景,因此只是一个黑色屏幕,表应该在那里。
有人能告诉我如何在我放松时手动重新初始化tableView或重置TableViewController?我尝试了tableView.reload()中的viewDidAppear(),但什么也没有发生,因为我怀疑问题是TableViewController本身没有像segue之前那样的原始帧。
Link to screenshots with descriptions
表视图控制器代码:

class StatsTableViewController: UITableViewController {
    //variable stuff

    @IBAction func unwindToRoot(_ sender: UIStoryboardSegue) {
    }

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

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        DispatchQueue.main.async {
            self.tableView.reloadData()
        }
        self.getData()
    }

    // MARK: - Table view data source

    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return solves.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! StatsTableViewCell
        cell.timeLabel?.text = solves[indexPath.row].0
        cell.scrambleLabel?.text = solves[indexPath.row].1
        return cell
    }

    //other stuff
}

最佳答案

设置委托数据源方法
//在viewDidLoad()中添加这两行

override func viewDidLoad() {
            super.viewDidLoad()
            self.getData()

        //Add this line
        self.UITableViewName.delegate = self
        self.UITableViewName.dataSource = self

    }

关于swift - 展开后,TableView消失,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47974582/

10-13 08:08