我正在使用故事板进行OSX开发。我正在使用NSTableView,并且此表视图的行使用了不同的NSTableRowViews。这是逻辑-
func getRowView(#forIndex:Int) -> NSTableRowView?{
if forIndex == lastSelectedRow{
var storyboard = NSStoryboard(name: "Settings", bundle: nil)
var accountController = storyboard?.instantiateControllerWithIdentifier("account") as! CMMAccountViewController
accountController.accountData = listOfAccounts[forIndex]
var rowView = accountController.view as! CMMAccountView
return rowView
}
else{
var rowView = tableView.makeViewWithIdentifier("accountSeetingsRow", owner: self) as! CMMAccountRowView
rowView.titleLable.stringValue = listOfAccounts[forIndex].nickname!
rowView.captionLable.stringValue = listOfAccounts[forIndex].accountDisplayName!
return rowView
}
}
问题:我在视图中有一个按钮,其视图控制器在第-行处实例化-
var accountController = storyboard?.instantiateControllerWithIdentifier("account") as! CMMAccountViewController
而且我已经CTRl从CMMAccountViewController中的该按钮拖动了一个动作,但是每当我单击该按钮时,应用程序就会因EXE_BAD_ACCESS而崩溃。
为什么会这样呢?我应该如何在NSTableRowView中使用该按钮?
最佳答案
问题解决了。问题是accountController是局部变量,使用视图后就将其释放。我必须保持该参考资料有效,以避免重新分配该参考资料。