2009-06-28 11 views
7

w Xcode, szablon Utility Aplikacja sprawia, że ​​projekt z:Jak wybrać kod do umieszczenia w widoku a ViewController?

MAINVIEW, MainViewController

i

FlipsideView, FlipsideViewController

W mojej aplikacji, dwa poglądy odpowiadają głównym interfejsie i ekran preferencji. Oczywiście chcę, aby prefs były odzwierciedlone w głównym interfejsie i utrzymywały się na dysku, aby zapamiętać ustawienia. Wiem, jak to zrobić.

Problem polega na tym, że patrząc na przykładowy kod podobnych aplikacji, widzę, że niektóre z nich umieszczają większość aktywnego kodu w Widoku, pozostawiając ViewControllerowi niewiele więcej niż kod pośredniczący, ale niektóre inne robią to na odwrót.

Czy istnieje pewna reguła, dzięki której można zdecydować, gdzie umieścić większą część mojej funkcjonalności?

Odpowiedz

2

Jednym ze sposobów podjęcia decyzji: jeśli aplikacja otrzyma ostrzeżenie o małej ilości pamięci, domyślnym zachowaniem jest to, że każdy widok, który nie jest obecnie widoczny, może zostać zniszczony. Oznacza to, że jeśli masz jakieś informacje o stanie, których nie możesz łatwo odtworzyć, lepiej nie utrzymuj ich w widoku.

Zależy więc od tego, co robi większość funkcji: jeśli zachowuje informacje utworzone przez użytkownika, musi znajdować się w kontrolerze widoku.

2

Jeśli chcesz być purystą MVC, rzeczy takie jak przełączanie widoków i obsługa zdarzeń powinny iść do kontrolera, a kod widoku do widoku w widoku.

Ale można umieścić w widoku pewną logikę aplikacji, jeśli jest spójna w całej aplikacji.

+0

Zgadzam się, że generalnie tylko kod widoku-budowania należy do klasy widoku. I często nie jest potrzebny kod budowania widoku, więc możesz całkowicie pozbyć się klasy widoku. –

1

W StackOverflow jest już kilka pytań dotyczących kontrolera modelu. Na przykład zobacz What goes into the "Controller" in "MVC"?.

W konkretnym scenariuszu preferencje same w sobie są rodzajem modelu, który śledzi preferencje użytkownika. Zapisywanie i ładowanie tych preferencji jest obowiązkiem administratora. Wyświetlanie tych preferencji i dawanie użytkownikowi sposobu na ich zmianę jest obowiązkiem widzenia. I wreszcie, kiedy użytkownik zmienia te preferencje, widok zgłasza to kontrolerowi, który dokonuje odpowiednich zmian w modelu.

Powiązane problemy