2014-11-17 15 views
6

Zgodnie z dokumentacją na NSSplitViewControllers, powiązany NSSplitView używa NSSplitViewController jako delegata. W szczególności w dokumentacji "Kontroler widoku podzielonego służy jako delegat jego obiektu widoku dzielonego (obiekt, który zarządza dzielnikami) .Jeśli nadpisujesz metodę delegowania widoku podzielonego, twoje nadpisanie musi wywołać super."NSSplitViewController w OSX 10.10 przy użyciu Xcode 6

Zaimplementowałem NSSplitViewController w konstruktorze interfejsów i nadałem mu klasę. Jednak żaden z delegatów splitView nie jest nigdy wywoływany. Dodatkowo, jeśli po prostu robię coś takiego jak pluć, który delegat splitView [NSLog (@ "% @", self.splitView.delegate); ], wynikiem jest "null". Jeśli jednak przypisać delegata albo w samej IB (przeciągając wylot przekazać NSSplitViewController) lub wewnątrz kodu ([self.splitView setDelegate: self]), pojawia się następujący błąd:

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

Jestem kompletnie oszołomiony.

Odpowiedz

17

Jeśli delegat widoku podziału implementuje jedną z poniższych metod, staje się niezgodny z układem automatycznym.

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

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


A ponieważ NSSplitViewController wymaga użycia układu Auto (wymieniony w dokumentacji), metody te są niezgodne z NSSplitViewController i nie powinny być wdrożone w podklasie.

+2

DZIĘKUJEMY! Początkowo byłem niesamowicie zdezorientowany, ponieważ myślałem, że jedynymi opcjami są niskie (250) i wysokie (750), a kiedy to zrobiłem, nie dostałem takiego zachowania, jakiego oczekiwałem. Zmieniając wzór wzorca 0 na widok podrzędny na 260 i pozostawiając wzorzec trzymania widoku podrzędnego na 250, otrzymałem dokładnie to, co próbowałem zrobić. Bardzo doceniane! –

+0

Dzięki! Ta informacja nie jest nigdzie zapisana w dokumentacji! – b123400