2014-11-17 21 views
6

In base alla documentazione su NSSplitViewControllers, il NSSplitView associato utilizza NSSplitViewController come delegato. Nello specifico nella documentazione, "Il controllore della vista divisa funge da delegato del suo oggetto vista divisa (l'oggetto che gestisce i divisori) .Se si ignora un metodo di delega della vista divisa, l'override deve chiamare super."NSSplitViewController in OSX 10.10 utilizzando Xcode 6

Ho implementato un NSSplitViewController nel generatore di interfacce e gli ho dato una classe. Tuttavia, nessuno dei delegati di splitView viene mai richiamato. Inoltre, se faccio solo qualcosa come sputare chi è il delegato splitView [NSLog (@ "% @", self.splitView.delegate); ], il risultato è "null". Se, tuttavia, assegno il delegato sia in sé IB (trascinando l'uscita delegato al NSSplitViewController) o all'interno di codice ([self.splitView setDelegate: self];), ottengo il seguente errore:

An uncaught exception was raised
SplitViewController's splitView is unable to use autolayout because the SplitViewController overrides an incompatible delegate method.

Sono completamente sconcertato.

risposta

17

Se il delegato di una vista divisa implementa uno dei seguenti metodi, diventa incompatibile con il layout automatico.

splitView:constrainMinCoordinate:ofSubviewAt: 
splitView:constrainMaxCoordinate:ofSubviewAt: 
splitView:resizeSubviewsWithOldSize: 
splitView:shouldAdjustSizeOfSubview: 

https://developer.apple.com/library/mac/releasenotes/AppKit/RN-AppKitOlderNotes/#10_8AutoLayout


E poiché NSSplitViewController richiede l'utilizzo di layout automatico (menzionato nella documentazione), questi metodi sono incompatibili con NSSplitViewController e non dovrebbero essere attuate in una sottoclasse.

+2

GRAZIE! Inizialmente ero incredibilmente confuso perché pensavo che le uniche opzioni erano basse (250) e alte (750), e quando l'ho fatto, non ho ottenuto il comportamento che mi aspettavo. Modificando la sottoview 0 mantenendo il modello a 260 e lasciando il modello 1 in attesa di subview a 250, ho ottenuto esattamente quello che stavo cercando di fare. Molto apprezzato! –

+0

Grazie! Questa informazione non è scritta nella documentazione da nessuna parte! – b123400