0

I ein Storyboard, die ein Hauptfenster (mit einer entsprechenden MainWindowController Klasse) enthält, und eine Hauptansicht (ein NSSplitViewController, mit entsprechenden MainViewController Klasse). Bei bestimmten Funktionen versuche ich den Delegierten der in der View enthaltenen NSSplitView auf die MainWindowController Klasse zu setzen.kann nicht delegieren ändern auf NSSplitView

Ohne eine IB-Verbindung ist der Delegierte NSSplitView bereits beim Start der Anwendung auf MainViewController eingestellt. Ich bin in der Lage einen Verweis auf die MainWindowController zu bekommen, aber wenn ich die Delegierten an die Fenstersteuerung zu setzen versuchen (die NSSplitViewDelegate nicht implementiert), erhalte ich folgend:

*** Assertion failure in -[NSSplitView setDelegate:], /Library/Caches/com.apple.xbs/Sources/AppKit/AppKit-1404.34/AppKit.subproj/NSSplitView.m:600 

Dies geschieht auch, wenn ich versuche, Setzen Sie den Delegaten auf nil.

Weiß jemand, warum dies so sein könnte, ob es Einschränkungen beim Festlegen von Delegaten gibt und ob es eine Möglichkeit gibt, IB zu verwenden, um den Delegaten eines Elements in einer Ansicht auf einen anderen Controller zu setzen?

Danke.

Antwort

1

Ich habe keinen Hinweis dafür, aber ich bin mir ziemlich sicher, dass die geteilte Ansicht und der Split-View-Controller nicht getrennt werden sollen. Glücklicherweise spiegelt NSSplitViewController die Delegiertenmethoden wider, sodass Sie eingreifen können. Es sollte daher keinen Grund geben, den Delegierten der Split-Ansicht zu ändern.

+1

Ja, der Groschen fällt. Welchen Sinn macht es schließlich, einen NSSplitViewController zu verwenden, wenn die Split-Ansicht ihn nicht verwendet? Letztendlich ging es darum, die Protokollaufrufe innerhalb des View-Controllers und des Window-Controllers zu implementieren und dann eine gemeinsame Methode aufzurufen, um diese zu verarbeiten. (Das Szenario wollte eine geteilte Ansicht in der Titelleiste, um die geteilte Ansicht in der Hauptansicht zu verfolgen). Danke für die Hilfe. –