我有一个带有集合视图的视图控制器,当用户单击该单元格时,该应用程序将进入视图控制器,该视图控制器具有用户拥有的所有帖子的表格视图。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "userprofile" {
let vc = segue.destination as! UsersProfileViewController
let postsForUser: [[String: Any]] = posts.filter {
guard let post = $0 as? [String : Any] else {
return false
}
return post["uid"] as? String == uid
} as! [[String : Any]]
print("postForUser = \(postsForUser)")
vc.posts = postsForUser //vc.posts should be [[String: Any]]
}}
在UsersProfileViewController中,单元格填充在CellForRowAt
中 let post = self.posts![(indexPath?.row)!] as! [String: AnyObject]
cell.Title.text = post["title"] as? String
cell.Author.text = post["Author"] as? String
cell.ISBN10.text = post["ISBN10"] as? String
cell.ISBN13.text = post["ISBN13"] as? String
cell.CoverType.text = post["CoverType"] as? String
cell.Price.text = post["Price"] as? String
每次出现视图时,我都想重新加载表视图。
override func viewWillAppear(_ animated: Bool) {
self.navigationController?.isNavigationBarHidden = true
let indexPath = self.selectedIndex
let cell:ProfileTableViewCell? = TableView.cellForRow(at: indexPath! as IndexPath) as! ProfileTableViewCell
if(vcUserBook == true) // from EditPostViewController
{
let post = self.posts![(indexPath?.row)!] as! [String: AnyObject]
cell?.Title.text = post["title"] as? String
cell?.Author.text = post["Author"] as? String
cell?.ISBN10.text = post["ISBN10"] as? String
cell?.ISBN13.text = post["ISBN13"] as? String
cell?.CoverType.text = post["CoverType"] as? String
cell?.Price.text = post["Price"] as? String
}
}
但是当我运行它时,当我点击收集单元时应用程序崩溃。
答案 0 :(得分:1)
您可以重新加载数据
override func viewWillAppear(_ animated: Bool) { self.navigationController?.isNavigationBarHidden = true
YourTableView.reloadData() }
答案 1 :(得分:1)
您无法像cell
中那样发起viewWillAppear
。 tableView还没有完成它的绘制,这就是你得到错误的原因。
viewWillAppear
中的所有此部分都需要在cellForRowAt
中完成:
let indexPath = self.selectedIndex
let cell:ProfileTableViewCell? = TableView.cellForRow(at: indexPath! as IndexPath) as! ProfileTableViewCell
if(vcUserBook == true) // from EditPostViewController {
let post = self.posts![(indexPath?.row)!] as! [String: AnyObject]
cell?.Title.text = post["title"] as? String
cell?.Author.text = post["Author"] as? String
cell?.ISBN10.text = post["ISBN10"] as? String
cell?.ISBN13.text = post["ISBN13"] as? String
cell?.CoverType.text = post["CoverType"] as? String
cell?.Price.text = post["Price"] as? String
}
在viewWillAppear
TableView.reloadData()
中,您应该只cellForRowAt
处理url: '/main-category/:id'
中的单元格。