這裏是我現在有的代碼:變量nil當試圖傳遞變量到視圖控制器與segue
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?
}
你可以看到,我指定了「測試」 valueToPass在didSelectRowAtIndexPath
但在prepareForSegue
,valueToPass是零?爲什麼?
是你的tableview與故事板中的segue展開?如果是這種情況,我不確定'tableView:didSelectRowAtIndexPath:'實際上在'prepareForSegue:sender:'之前被調用。您可以通過在兩種方法中刪除斷點並在點擊單元格時首先查看哪些行程中的斷點來進行測試。嘗試保留'prepareForSegue:sender:'不含對其他方法的隱式依賴關係 – markedwardmurray