Swift - 将数据从CollectionView传递到TableViewController

时间:2014-11-05 20:10:39

标签: ios iphone swift

我正在学习新的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

我必须在这里放一些代码吗?

请帮帮我,我真的很感激:)谢谢:)

2 个答案:

答案 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)
}