单击 NSTableRowView 中的按钮时 AppDelegate 崩溃
Crash in AppDelegate on clicking button in NSTableRowView
我正在使用故事板进行 OSX 开发。我正在使用 NSTableView 并且不同的 NSTableRowViews 用于此 table 视图的行。这是逻辑-
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 中使用该按钮?
问题已解决。问题是 accountController 是局部变量,一旦使用视图,它就会被释放。我必须让这个引用保持活动状态以避免重新分配这个引用。
我正在使用故事板进行 OSX 开发。我正在使用 NSTableView 并且不同的 NSTableRowViews 用于此 table 视图的行。这是逻辑-
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 中使用该按钮?
问题已解决。问题是 accountController 是局部变量,一旦使用视图,它就会被释放。我必须让这个引用保持活动状态以避免重新分配这个引用。