如何使用segue将字符串传递给textView?

时间:2016-05-22 22:18:28

标签: ios swift uitableview uitextview segue

sectionrow标题"注释"。最初有一个string cell"点击此处添加备注"。点击segues textViewnote后添加备注。现在,在该部分中有一个带有注释的新单元格("单击此处添加注释"现在是第二行)。单击带有注释的单元格并再次转到textView时,我希望textView在编辑之前显示fatal error: unexpectedly found nil while unwrapping an Optional value,然后通过segue传递注释。但错误显示func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { switch indexPath.section { case 0-3: break case 4: self.performSegueWithIdentifier("toTextView", sender: indexPath) default: break } } override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "toTextView" { let indexPath = sender as! NSIndexPath let noteText = detailsInSection[4][indexPath.row] as! String let textVC = segue.destinationViewController as! TextViewController if noteText == "Click here to add notes" { // do nothing } else { textVC.notesTextView.text = noteText // Break point is here } } } 。请帮助找出问题所在。

我的代码:

    ContentResolver.setSyncAutomatically(mAccount, AUTHORITY, true);
    ContentResolver.addPeriodicSync(
            mAccount,
            AUTHORITY,
            Bundle.EMPTY,
            4);

2 个答案:

答案 0 :(得分:1)

根据评论,notesTextView为零,因为此时尚未加载textVC中的视图。更改代码以将noteText属性添加到TextViewController,在prepareForSegue中设置该值,然后在viewDidLoad的{​​{1}}中设置TextViewController }。

答案 1 :(得分:1)

请勿尝试操纵其他视图控制器的视图。这违反了封装原则,这是面向对象设计中的一个重要思想。

您应该将其他视图控制器的视图视为私有。

@pbasdf解释了为什么它在这种情况下失败了(当调用prepareForSegue时,其他视图控制器的视图尚未被加载且为零)。

干净的修复方法是将字符串属性添加到目标视图控制器并设置该属性。