Swift 如何从自定义单元格转到imageView?
我已经有了一个自定义表视图单元格的数据数组。目前只包括一个imageView和标签 我想使用imageView创建一个单独的视图控制器,将小缩略图显示为大版本。但是,当然,使用我的数据数组,以便在宿主imageView中加载正确的图像 基本上,我想创建一个HostImageView,当我从列表中选择数据数组时,它将加载我的数据数组 我当前的阵列如下所示:Swift 如何从自定义单元格转到imageView?,swift,xcode,imageview,tableview,Swift,Xcode,Imageview,Tableview,我已经有了一个自定义表视图单元格的数据数组。目前只包括一个imageView和标签 我想使用imageView创建一个单独的视图控制器,将小缩略图显示为大版本。但是,当然,使用我的数据数组,以便在宿主imageView中加载正确的图像 基本上,我想创建一个HostImageView,当我从列表中选择数据数组时,它将加载我的数据数组 我当前的阵列如下所示: import UIKit class PictureViewController: UIViewController { @IBO
import UIKit
class PictureViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
var pictures: [picture] = []
override func viewDidLoad() {
super.viewDidLoad()
pictures = createArray()
tableView.rowHeight = 120
tableView.delegate = self
tableView.dataSource = self
}
func createArray() -> [picture] {
var tempPictures: [picture] = []
let picture1 = picture(image: #imageLiteral(resourceName: "Arteries Hand"), title: "Arteries Hand")
let picture2 = picture(image: #imageLiteral(resourceName: "Arteries Upper Arm"), title: "Arteries Upper Arm")
let picture3 = picture(image: #imageLiteral(resourceName: "Arteries Shoulder"), title: "Arteries Shoulder")
let picture4 = picture(image: #imageLiteral(resourceName: "Arteries Upper Limb"), title: "Arteries Upper Limb")
tempPictures.append(picture1)
tempPictures.append(picture2)
tempPictures.append(picture3)
tempPictures.append(picture4)
return tempPictures
}
}
extension PictureViewController: UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return pictures.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let picture = pictures[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "pictureCell") as! pictureCell
cell.setPicture(picture: picture)
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "segue", sender: self)
}
}
PictureCell:
import UIKit
class pictureCell: UITableViewCell {
@IBOutlet weak var pictureImageView: UIImageView!
@IBOutlet weak var pictureTitleLabel: UILabel!
func setPicture(picture: picture) {
pictureImageView.image = picture.image
pictureTitleLabel.text = picture.title
}
}
上述方法触发以下类方法,您可以使用它来传输数据:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard let segueId = segue.identifier else { return }
switch segueId {
case "segue":
let destinationVC = segue.destination as! YournextVC
destVC.pictures = self.pictures // This is how you transfer info to the next View Controller
default:
break
}
}
你能展示你在picture cell类中写的东西吗?你的问题不清楚。你的
didSelectRowAt
实现现在是不必要的,因为你所做的只是调用performSegue
,你可以直接在情节提要中配置它。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard let segueId = segue.identifier else { return }
switch segueId {
case "segue":
let destinationVC = segue.destination as! YournextVC
destVC.pictures = self.pictures // This is how you transfer info to the next View Controller
default:
break
}
}