2012-09-16 8 views
9

Chciałbym rozpocząć aplikację Cocoa z numerem ViewController, podobnie jak szablon "Single View App" na iOS, ale nie ma takiego szablonu (czy istnieje publiczny/open source, który może być używany?)Jaki jest standardowy sposób dodawania ViewController w aplikacji Mac OS X Cocoa? (czy jest to wymagane?)

Czy to prawda, że ​​w przypadku aplikacji Cocoa tak naprawdę nie potrzebujemy tego, ponieważ NSView może już wszystko zrobić? Możemy po prostu umieścić całą obsługę zdarzeń w naszej niestandardowej klasie NSView. Czy to możliwe, że iOS wymaga tego o wiele więcej, ponieważ Rotacja jest obsługiwana przez ViewController, a rotacja jest zwykle wymagana? Ale jeśli używamy MVC, to może lepiej zawsze używać ViewController, a jeśli tak, to czy istnieje standardowy sposób, szablon?

Odpowiedz

3

Na OS X NSViewController nie jest tak często używany jako UIViewController na iOS. Jednym z powodów jest to, że nie jest on zbyt użyteczny i brakuje mu wielu ciekawych funkcji UIViewController. Istnieje tylko kilka sytuacji, w których naprawdę musisz ich użyć, na przykład podczas korzystania z urządzenia NSPopover.

Istnieje kilka sposobów na uporządkowanie kodu OS X. Jeden z nich używa NSWindowController. Możesz myśleć o NSWindowController jako odpowiedniku UIViewController na iOS.

+1

W systemie OSX nie można przełączać się między kontrolerami NSView, tak jak na iOS w prawo? Więc nie ma przesuwania w prawo i tak dalej. Czy mam rację mówiąc, że jest to przydatne tylko w przypadku wyskakujących widoków? –

+1

Nadal przydatna jest struktura aplikacji, oddzielając niezależne części aplikacji i implementując je w kontrolerze widoku. Na przykład, aby zaimplementować coś takiego jak aplikacja Mail, możesz mieć jeden kontroler widoku wyświetlający listę wiadomości i drugi niezależny kontroler widoku, który wyświetla wybraną wiadomość e-mail. – DrummerB

5

"Kontrolerem" w OS X w zakresie zarządzania NSView jest NSWindowController. Chociaż perkusista mówi, że NSViewController nie jest zbyt użyteczny, muszę się z tym nie zgodzić - przydaje się on do podziału NSWindowController, gdy robi się zbyt duży i ma wyraźne podziały logiczne pod względem widoków.

Można mieć jeden NSWindowController, a raz to komplikuje mało, NSWindowController mógł delegować zadania odpowiadające konkretnych poglądów podklas NSViewController, i pod tym względem jest to bardzo przydatne.

W domyślnych szablonach (jeśli dobrze pamiętam) AppDelegate przejmuje rolę kontrolera okien, choć nie jest to technicznie jeden. W bardziej złożonych aplikacjach dobrym pomysłem jest utworzenie instancji kontrolera okien.

Dopóki nie miksujesz kontrolera i widoku, możesz użyć czegokolwiek. Widok powinien być relegowany do wyświetlania i podstawowej obsługi wprowadzania danych.

+0

Nie zgadzam się z tobą. Inne niż wyskakujące okienko, kiedy rzeczywiście potrzebujesz kontrolera NSViewController? Ponieważ dla wszystkich innych rzeczy w twoim NSWindow, możesz po prostu użyć niestandardowego widoku i nadać temu niestandardowemu widokowi własną klasę. Nie musisz mieć oddzielnych kontrolerów NSView, aby dzielić i zarządzać zawartością w NSWindow. –

Powiązane problemy