Swift /从UICollectionView传递数据到DetailView / Custom按钮

时间:2016-03-01 16:42:35

标签: ios swift

我有一个UICollectionView,想要通过按下自定义按钮来切换到DetailView。我需要传递数据。

该按钮是可重复使用的单元格的一部分。

我使用以下代码获得SIGABRT(let indexPath = sender as! NSIndexPath)。

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

        let indexPath = sender as! NSIndexPath

        if segue.identifier == "showDetailasDetail" {
            let vc = segue.destinationViewController as! InfoPopupVC
            vc .currentEvent = posts[indexPath.row]
}

如果我执行没有let indexPath = sender as! NSIndexPathvc .currentEvent = posts[indexPath.row]的segue,我就没有任何问题(但没有传递任何数据......)

非常感谢帮助。

DestinationViewController:

class InfoPopupVC: UIViewController {

    var currentEvent: EventPosts?

    @IBOutlet weak var infoPopupTitleLabel: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()

        let title = currentEvent?.title
        infoPopupTitleLabel.text = title

    }
}

EventPosts Struct:

    struct EventPosts {
    var title = ""
    var imageUrl = ""
    var url = ""
    var date = ""
}

1 个答案:

答案 0 :(得分:1)

您尝试将sender转换为NSIndexPath,其中调用prepareForSegue:的组件(或发件人)实际上是按钮。

快速解决方法可能是在tag中设置UIButton的{​​{1}}属性。然后你的方法看起来像这样:

collectionView(_:cellForItemAtIndexPath:)