【发布时间】:2016-07-23 17:28:46
【问题描述】:
这是我目前拥有的代码:
var valueToPass:String!
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
let indexPath = tableView.indexPathForSelectedRow();
let currentCell = tableView.cellForRowAtIndexPath(indexPath!) as UITableViewCell!;
valueToPass = currentCell.textLabel.text // valueToPass now equals "test"
performSegueWithIdentifier("yourSegueIdentifer", sender: self)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var viewController = segue.destinationViewController as AnotherViewController
viewController.passedValue = valueToPass // valueToPass equals nil here? Why?
}
如您所见,我已在didSelectRowAtIndexPath 中将“测试”分配给 valueToPass,但在 prepareForSegue 中,valueToPass 为零?为什么?
【问题讨论】:
-
你的 tableview 是否用 segue 放在故事板中?如果是这种情况,我不确定
tableView:didSelectRowAtIndexPath:是否真的在prepareForSegue:sender:之前被调用。您可以通过在这两种方法中删除断点并在点击单元格时查看哪个先行来测试这一点。尽量让prepareForSegue:sender:不依赖于其他方法
标签: ios swift uitableview segue uistoryboardsegue