Я хочу использовать NSStackView для представления стека друг над другом, я также хочу, чтобы они могли расширяться, поэтому я не могу использовать NSCollectionView, если я правильно понял. Так, в раскадровке, я создал NSStackView (встроенный в целях прокрутки) в главном контроллере представления и контроллер представления, что я хочу, чтобы заполнить его:Добавление представлений с IBAction в приложение 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")
}
Running это небольшое приложение работает отлично, каждый раз, когда я нажимаю кнопку, появляется еще десять элементов представления стека. Но, когда у меня есть наглость, чтобы нажать одну из кнопок справа сбои приложения:
Где я буду неправильно? Я попытался обойти IBAction, чтобы убедиться, что это то, что ломается, и приложение не будет разбиваться, если я подклассифицирую кнопку и создаю протокол «buttonDelegate» с функцией, вызываемой из mouseUp.
У вас нет StackTrace в отладчик/консоли? – Larme
Нет, не производится. Его действительно странно, обычно «Текущая трассировка стека»: в правой колонке. Но теперь его пустым, за исключением синего (lldb) –