section
有row
标题"注释"。最初有一个string
cell
"点击此处添加备注"。点击segues
textView
到note
后添加备注。现在,在该部分中有一个带有注释的新单元格("单击此处添加注释"现在是第二行)。单击带有注释的单元格并再次转到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);
答案 0 :(得分:1)
根据评论,notesTextView
为零,因为此时尚未加载textVC
中的视图。更改代码以将noteText
属性添加到TextViewController
,在prepareForSegue
中设置该值,然后在viewDidLoad
的{{1}}中设置TextViewController
}。
答案 1 :(得分:1)
请勿尝试操纵其他视图控制器的视图。这违反了封装原则,这是面向对象设计中的一个重要思想。
您应该将其他视图控制器的视图视为私有。
@pbasdf解释了为什么它在这种情况下失败了(当调用prepareForSegue
时,其他视图控制器的视图尚未被加载且为零)。
干净的修复方法是将字符串属性添加到目标视图控制器并设置该属性。