ここに私が現在持っているコードはあります:変数を継承してコントローラを表示するときに変数を渡すとき
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はnilですか?どうして?交換
は、あなたのテーブルビューがセグのストーリーボードにレイアウトされていますか?その場合、私は 'tableView:didSelectRowAtIndexPath:'が 'prepareForSegue:sender:'の前に実際に呼び出されているかどうかはわかりません。両方のメソッドでブレークポイントを削除し、セルをタップするときに最初にトリップを確認することで、これをテストできます。 'prepareForSegue:sender:'他のメソッドに暗黙の依存関係がないようにしてください。 – markedwardmurray