ios - 尝试将变量传递给带有 segue 的 View Controller 时变量 nil

标签 ios swift uitableview segue uistoryboardsegue

这是我目前拥有的代码:

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 中将“test”分配给 valueToPass,但在 prepareForSegue 中,valueToPass 为零?为什么?

最佳答案

尝试替换:

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)

}

有了这个:

func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {

    let currentCell = tableView.cellForRowAtIndexPath(indexPath.row) as! UITableViewCell;

    valueToPass = currentCell.textLabel.text! // valueToPass now equals "test"
    performSegueWithIdentifier("yourSegueIdentifer", sender: self)

}

此外,当您在 Storyboard 中进行转场时,请确保您没有从 tableview 拖到下一个 viewcontroller。这是因为如果您自动执行此操作,那么将在 didSelectRow 之前调用 perform segue... 使其在您设置值之前执行 segue。只需从承载 TableView 的 View Controller 拖动到新 View 。

关于ios - 尝试将变量传递给带有 segue 的 View Controller 时变量 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38544624/

相关文章:

javascript - App.js 不更新 iOS 模拟器中的修改代码

objective-c - WKWebView:允许访问资源文件夹

ios - 在 TableView 中找不到 UIWebView

iphone - 生成此 UI 的最简单方法是什么?

iOS菜单标题到导航栏标题动画

iphone - 添加 subview 或新的 View Controller

ios - Jquery Mobile 1.4 页眉页脚在页面转换期间丢失 css 样式

swift - 在 Swift 中转换为泛型可选

swift - 没有 "as CVarArg"无法将日期传递给 NSPredicate(格式 : . ..)

ios - EXC_BAD_ACCESS(代码=EXC_I386_GPFLT)当deleteRows(在: [IndexPath])