在另一个视图控制器展开segue之后,在UIView数据上重新加载自定义tableview

时间:2017-11-07 05:18:01

标签: ios swift uitableview uiview

我一直在尝试在另一个视图控制器完成后重新加载数据保存文件并放松到tableview

顺便说一下,由于此表格视图是在UIViewController上创建的,因此在尝试放置tableview.reload()后出现此错误

主题1:EXC_BAD_ACCESS(代码= 2,地址= 0x7ffedffbcfa8)

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

我想这样做可能导致无限循环并永远保持reloadData?

实现此方法的正确方法是什么?

修改

    override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(true)
    tableView.reloadData()
}

@IBAction func unwindToCSVList(sender: UIStoryboardSegue) {
    //tableView.reloadData()
}

无论如何都行不通,这与我的UITableView代表有关吗?

1 个答案:

答案 0 :(得分:1)

tableView.reloadData()会调用numberOfRowsInSection,反之亦然。你猜对了:无限循环。

您可以执行以下操作:

  1. 创建一个委托,该委托将由第一个控制器完成。
  2. 第二个控制器将调用委托方法并在其中重新加载表。
  3. 委托示例:get indexPath of UITableViewCell on click of Button from Cell

    或简单方法。

    tableView.reloadData()ViewWillAppear方法内拨打viewDidAppear