为什么数据没有通过我的代码传递到我的代码中?

时间:2019-07-11 09:19:26

标签: ios swift uitableview

当我使用协议ViewController按下UICollectionViewCell时,我想通过segue将数据传递到目的地cellWasPressed()UICollectionView嵌入在UITableViewCell中,因此使其成为集合视图的委托。

我已经尝试使用以下代码来执行任务,但是很遗憾,事件数据没有通过segue传递,因此目的地ViewController为空。

这是在UITableViewCell中找到的委托代码:

 func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        selectedIndex = indexPath
        selectedIndex2 = self.indexPath
        print(selectedIndex)
        print(selectedIndex2)
        delegate?.cellWasPressed()
    }
 protocol CellDelegate {
    func cellWasPressed()
 }

 extension UIResponder {
    func next<T: UIResponder>(_ type: T.Type) -> T? {
        return next as? T ?? next?.next(type)
    }
 }

 extension UITableViewCell {

    var TableView: UITableView? {
        return next(UITableView.self)
    }

    var indexPath: IndexPath? {
        return TableView?.indexPath(for: self)
    }
 }

&这是在BrowseViewController中为segue做准备的代码:

 func cellWasPressed() {
        if let index = selectedIndex{
            self.performSegue(withIdentifier: "ViewEventDetails", sender: index)
        }
    }
 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
   if(segue.identifier == "ViewEventDetails") {
            let destination = segue.destination as? EventDetailViewController
            if let index = sender as? IndexPath {

                if let index2 = selectedIndex2 {
                    let cell = EventTable.cellForRow(at: index2) as! PopularCell
                    let events = groupedEventArray[index2.row].1
                    let eventToPass = events[index.row]
                    destination?.navigationItem.title = eventToPass.event_name
                }

            }
        }
 }

我希望将其修复为其他代码,以便通过事件将事件数据传递到目标ViewController

0 个答案:

没有答案