错误:在展开Optional值时找到nil;将数据传递给新控制器时

时间:2016-10-06 04:33:57

标签: ios swift uitableview pass-data unwrap

我正在学习swift 2.我正在尝试传递被点击到新视图控制器的单元格(UITableView)的数据。但我经常收到错误:“unexpectedly found nil while unwrapping an Optional value”代码行“destination!.label.text = valueToPass”。
以下是我的代码 我可以知道我该怎么做才能解决它?我花了几个小时但仍然坚持下去。

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    let indexPath = tableView.indexPathForSelectedRow;
     let Mycell = tableView.cellForRowAtIndexPath(indexPath!) as UITableViewCell!;

     valueToPass = (Mycell.textLabel?.text)!
     performSegueWithIdentifier("webNext", sender: self)

        print("\(indexPath!.row)")

        print(valueToPass)

    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if (segue.identifier == "webNext") {
        let destination = segue.destinationViewController as? web___ViewController
        destination!.label.text = valueToPass
    }

}

1 个答案:

答案 0 :(得分:3)

通过执行此操作:destination!.label.text = valueToPass,即使在绘制或显示标签之前,您已经在标签上设置了一些文字。

而是使用某个变量将数据传递到下一个视图,并在viewDidLoad内显示数据。

let destination = segue.destinationViewController as? web___ViewController

destination!.strValue = valueToPass

Web_VC:

var strValue:String?

func viewDidLoad(){
   super.viewDidLoad()

   label.text = strValue!
}