我正在学习新的Swift编程语言,我想知道如何将数据从CollectionViewController传递给TableViewController。
我的目标是每当有人点击CollectionViewController中的一个单元格时,此操作会将它们带到TableViewController,其中显示与所选单元格相关的图像列表。
CollectionViewController.swift
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "listSegue") {
if let indexPath = self.menuCollection.indexPathsForSelectedItems() {
let control = (segue.destinationViewController) as TableViewCell
control.cellImage.image = UIImage(named: sectionImages[indexPath])
}
TableViewCell.swift
class TableViewCell: UITableViewCell {
@IBOutlet weak var cellImage: UIImageView!
}
TableViewController.swift
我必须在这里放一些代码吗?
请帮帮我,我真的很感激:)谢谢:)
答案 0 :(得分:0)
segue.destinationViewController
似乎不太可能返回TableViewCell
; - )
应该是UITableViewController
派生类的一个实例,它应该是segue的目的地。
我说" UITableViewController
- 派生"因为它需要是您的设计的自定义类,您可以设置公共属性 - 可能包含来自所选单元格的值和/或CollectionViewController
中的某些其他状态。
CF
答案 1 :(得分:0)
首先,如果您的数据保留在数组中,您需要知道要传递给prepareForSegue的对象。因此,您可以创建一个tempVar,并在选择时指定值。
private var testObj: TestObj!
func collectionView(collectionView: UICollectionView, didSelectItemAtPath indexPath: NSIndexPath){testObj = self.testObjects[indexPath.item]}
其次,您需要在TableViewCell中创建一个公共API,为您设置值。即
// MARK: Public API
var objTest: ObjTest!
您可能需要创建segue.identifier来检查您是否有多个segue。
if segue.identifier == "Your Segue name" {
let loginSignupVC = segue.destinationViewController as!
YourDestination Controller
//do something here
}
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
object = self.objects[indexPath.item]
self.performSegueWithIdentifier("Your segue name", sender: self)
}