【发布时间】:2016-05-03 10:59:36
【问题描述】:
我在一个视图控制器中设置了一个 tableview,我正在尝试将 indexPath.row 文本发送到新视图控制器的标签。我收到一个错误,说它在展开可选值时发现 nil。如果我在下面显示的 viewController 代码中打印“selectedClass”,我会得到 indexPath.row 的文本。如果我在新的 viewController 中打印文本,我什么也得不到。这是我的代码:
覆盖 func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let classIndexPath = tableView.indexPathForSelectedRow!
let selectedCell = tableView.cellForRowAtIndexPath(classIndexPath)! as UITableViewCell
let spinningActivity = MBProgressHUD.showHUDAddedTo(self.view, animated: true)
spinningActivity.labelText = "Just a Moment"
if reachabilityStatus == kNOTREACHABLE {
spinningActivity.hide(true)
self.displayAlert("No Internet Connection", message: "Please connect to the internet before continuing.")
} else {
spinningActivity.hide(true)
let selectedClass = selectedCell.textLabel!.text!
let newCardSetVC = self.storyboard?.instantiateViewControllerWithIdentifier("NewCardSetViewController") as! NewCardSetViewController
newCardSetVC.selectedClassLabel.text = selectedClass as String
self.performSegueWithIdentifier("addCardSetSegue", sender: self)
}
}
【问题讨论】:
-
您正在创建
NewCardSetViewController的新实例并同时使用segue。这真的是你想要的吗? -
Eendje 所说的。你没有使用你创建的 newCardSetVC 实例?
-
self.presentViewController(newCardSetVC, animated: true, completion: nil) -
您也可以调用
performSegueWithIdentifier,然后在prepareForSegue中执行将 selectedClass 值传递给 VC 的所有逻辑 -
你可能不应该这样做,你会创建一个
NewCardSetVC的新实例,并使用segue。这可能就是您遇到此问题的原因。尝试使用prepareForSegue方法传递您需要的文本信息
标签: swift