我遵循了多个教程,并在此处尝试了很多答案,但我似乎无法弄清楚问题出在哪里。
这是我的代码:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
println("You selected cell #\(indexPath.row)!")
let indexPath = homeTimelineTableView.indexPathForSelectedRow()
let currentCell = homeTimelineTableView.cellForRowAtIndexPath(indexPath!) as! ProductTableViewCell
productTitle = currentCell.productCellTitleLabel!.text
println("The product title is \(productTitle)")
self.performSegueWithIdentifier("timelineDetail", sender: self)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var titleLables: String!
if (segue.identifier == "timelineDetail") {
println("it works thus far!")
let viewController = segue.destinationViewController as! ProductDetailViewController
let selectedRow = homeTimelineTableView.indexPathForSelectedRow()!.row
viewController.titleLabel?.text = productTitle
}else {
println("wtf is wrong with your code?!")
}
}
我没有收到任何错误。但是,当我去运行我的应用程序时,我的产品标题仍然拒绝传递给 View Controller 。 有什么建议么?谢谢。
最佳答案
现阶段viewController.titleLabel
为nil(你用的是?
,所以没有报错)
正确的做法应该是:
- 在 ProductDetailViewController 中添加
var productTitle: String!
- 不是将 productTitle 传递给 UILabel,而是传递给
viewController.productTitle
- 在 ProductDetailViewController 的
viewDidLoad
中设置viewController.titleLabel?.text = self.productTitle
关于ios - 如何将数据从 UITableViewCell 传递到 ViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31744525/