segue放松后,TableView消失

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了segue放松后,TableView消失相关的知识,希望对你有一定的参考价值。

我花了一整天的时间试图解决这个问题,想要了解一下这里发生了什么:

我有一个自定义UITableViewController嵌入在navigation controller,它有一个按钮,触发一个普通的UIViewController segue。

简单的UIViewController有一个按钮,可以展开TableViewController,还有一个“后退”按钮,由于navigation controller而免费提供。

现在的问题是:当我从TableViewControllerUIViewController时,一切正常。从UIViewController,如果我按下“后退”按钮,它会回绕并且TableView会自动重新加载。然而,当我按下与@IBAction链接的按钮放松时,它会向TableViewController展开,但没有任何东西显示出来,甚至没有空桌子。

我的调试视图显示,一旦我尝试使用我的按钮(不是“背面)放松,TableViewController回到屏幕上,但它的框架超小,没有任何东西,所以navigation controller的黑色背景显示,因此只是一个黑色表应该是的屏幕。

我可以告诉我如何在我放松时手动重新初始化tableView或重置TableViewController吗?我在tableView.reload()尝试了viewDidAppear(),没有发生任何事情,因为我怀疑问题是TableViewController本身没有像以前那样的原始帧。

Link to screenshots with descriptions

TableViewController代码:

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
}
答案

您在状态TableViewController中使用这两种方法

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
            if segue.identifier == "SelectionSegue" {
                //Your code
            }
        }

        @IBAction func unwindToThisView(sender: UIStoryboardSegue) {
            // set Delegate datasource method
        }

为unwindToThisView按钮设置插座以查看图像

1.单击最后一个ViewController enter image description here的退出按钮

请参阅为后退按钮显示Segues插座 enter image description here

设置后退按钮的操作

enter image description here

以上是关于segue放松后,TableView消失的主要内容,如果未能解决你的问题,请参考以下文章

如何放松segue退后几步?

从 segue 显示视图时导航栏消失

放松 segue 永远放松

放松 Segue 还是别的啥?

IOS:推送segue后导航栏消失

单击TableView部分中的任意位置后如何执行segue?