我正在使用故事板进行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
}
}
问题:我在视图中有一个按钮,其viewcontroller在行实例化 -
var accountController = storyboard?.instantiateControllerWithIdentifier("account") as! CMMAccountViewController
我有CTRl从CMMAccountViewController中的那个按钮拖动了一个动作,但是每当我点击该按钮时,应用程序都会崩溃并发生EXE_BAD_ACCESS。 为什么会这样?我应该如何在NSTableRowView中使用该按钮?
答案 0 :(得分:0)
解决了问题。问题是accountController是局部变量,并且在使用视图后它被取消分配。我必须保持这个引用存活,以避免重新分配此引用。