我有一个UITableView,其中的行包含一个图像-我想使选定的行图像更大,这是我研究过的并具有此代码,但是,它返回的是默认的单元格图像,该图像在自定义单元格中定义,而不是在所选表格行中。
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableView.dequeueReusableCell(withIdentifier: "cellId", for: indexPath) as! myCell
let items = self.itemsarray[indexPath.row]
self.imageTapped(image: cell.itemsImageView.image!)
}
func imageTapped(image:UIImage) {
let newImageView = UIImageView(image: image)
newImageView.image = image
newImageView.frame = UIScreen.main.bounds
newImageView.backgroundColor = .black
newImageView.contentMode = .scaleAspectFit
newImageView.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer(target: self, action: #selector(ItemViewController.dismissFullscreenImage(_:)))
newImageView.addGestureRecognizer(tap)
self.view.addSubview(newImageView)
self.navigationController?.isNavigationBarHidden = true
self.tabBarController?.tabBar.isHidden = true
}
这是问题行self.imageTapped(image: cell.itemsImageView.image!)
,将不胜感激。
答案 0 :(得分:0)
替换此
let cell = tableView.dequeueReusableCell(withIdentifier: "cellId", for: indexPath) as! myCell
使用
let cell = tableView.cellForRow(at:indexPath) as! myCell
由于tableView.dequeueReusableCell
应该返回另一个要使用的单元格而不是您单击的单元格,因此您只能在cellForRowAt
内使用它
答案 1 :(得分:0)
问题是您在调用此代码时正在尝试创建新单元格:
let cell = tableView.dequeueReusableCell(withIdentifier: "cellId", for: indexPath) as! myCell
这意味着您始终会得到默认图像,如果尚未设置默认图像,则为nil。您必须获取已创建的单元格的引用,该单元格的图像视图中具有不同的图像。因此,您必须调用此名称:
let cell = tableView.cellForRow(at:indexPath) as! myCell
顺便说一句。您的班级名称myCell应该以大写字母开头