【发布时间】:2017-02-21 13:56:40
【问题描述】:
我想使用 NSStackView 将视图堆叠在彼此之上,我还希望它们能够展开,所以如果我理解正确,我就不能使用 NSCollectionView。 因此,在情节提要中,我在主视图控制器中创建了一个 NSStackView(嵌入在滚动视图中)和一个要填充它的视图控制器:
该按钮将用十个视图填充堆栈视图:
@IBOutlet weak var stackView: NSStackView!
@IBAction func redrawStackView(_ sender: Any) {
for i in 0..<10 {
let stackViewItemVC = storyboard?.instantiateController(withIdentifier: "StackViewItemVC") as! StackViewItemViewController
stackViewItemVC.id = i
stackView.addArrangedSubview(stackViewItemVC.view)
}
}
而右边的 ViewController 看起来就像这样:
class StackViewItemViewController: NSViewController {
var id: Int = -1
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
}
@IBAction func buttonPressed(_ sender: Any) {
debugPrint("StackViewItemViewController" + id.description + "pressed")
}
运行这个小应用程序运行良好,每次我按下按钮时,都会出现十个堆栈视图项。但是,当我大胆按下右侧的按钮之一时,应用程序崩溃了:
我哪里出错了? 我试图解决 IBAction 以验证这是什么问题,如果我将按钮子类化并使用从 mouseUp 调用的函数创建“buttonDelegate”协议,应用程序不会崩溃。
【问题讨论】:
-
您在调试器/控制台中没有堆栈跟踪吗?
-
不,没有生产。它真的很奇怪,通常在右栏中显示“当前堆栈跟踪:”。但现在它是空的,除了蓝色(lldb)