我正在构建一个使用tableView
和collectionView
来查看已保存的模因的模因生成器。当用户点击tableView中的单元格时,应该通过从前一个控制器滑动视图而不是通过模态呈现新视图来呈现图像,这是这种情况。这是我目前的代码
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let meme = memes[indexPath.row]
let detailController = UIStoryboard(name: "DetailsStoryboard", bundle: nil).instantiateViewController(withIdentifier: "DetailsViewController") as! DetailsViewController
present(detailController, animated: true, completion: nil)
detailController.detailsImageView.image = meme.memedImage
}
我发现的一切都取决于使用segue,我不是。我可以在didSelectRow方法中使用segue吗? Here是回购的链接。
答案 0 :(得分:2)
您必须使用UINavigationController
来推动控制器。
第二件事你不能从TableView didSelect方法将图像设置为DetailsViewController
。
相反,您可以将此图像传递给DetailsViewController
并在特定控制器中设置此图像。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let meme = memes[indexPath.row]
let detailController = UIStoryboard(name: "DetailsStoryboard", bundle: nil).instantiateViewController(withIdentifier: "DetailsViewController") as! DetailsViewController
detailController.memeImage = meme.memedImage //Pass image like this
self.navigationController?.pushViewController(detailController, animated: true)
}
在DetailsViewController
中这样做
class DetailsViewController: UIViewController {
//Add one memeImage variable
var memeImage: UIImage?
override func viewDidLoad() {
super.viewDidLoad()
detailsImageView.image = memeImage
}
}