在NSTableRowView中单击按钮时,AppDelegate崩溃

时间:2015-07-01 12:34:53

标签: macos swift cocoa storyboard nstableview

我正在使用故事板进行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中使用该按钮?

1 个答案:

答案 0 :(得分:0)

解决了问题。问题是accountController是局部变量,并且在使用视图后它被取消分配。我必须保持这个引用存活,以避免重新分配此引用。