【发布时间】:2018-07-04 16:17:37
【问题描述】:
试图将数据从我的collectionViewCell 传递到另一个UIViewController,但由于某种原因数据未传递。下面是我在didSelectItem 方法中的代码和我想将数据传递到的ViewController。我正在尝试使用从我的集合视图单元格数据传递的文本填充标签,但它始终显示我在UIViewController 中分配的默认字符串“test”。使用 swift 4.1
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let destinationVC = storyboard?.instantiateViewController(withIdentifier: "CaseDetailViewController") as! CaseDetailViewController
destinationVC.textPassedOver = MyCases[indexPath.section][indexPath.item]
self.navigationController?.pushViewController(destinationVC, animated: true)
}
// ViewController to pass data
class CaseDetailViewController: UIViewController {
var textPassedOver = "test"
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
label.text = textPassedOver
print(textPassedOver)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
【问题讨论】:
-
通过打印 MyCases[indexPath.section][indexPath.item] 来检查是否选择了您是否收到任何值
-
也接受 var textPassedOver : String?
-
@Dilip,是的,我确实检查并收到了 didselectitem 中的值,我可以在控制台中打印它。我观察到的问题是 CaseDetailViewController 的 viewdidload 中的打印语句首先执行,然后执行选择方法中的语句
标签: swift uiviewcontroller uicollectionview