Projekt widoku iPhone'a (UIView vs UIViewController)
Projektuję prostą aplikację Quiz. Aplikacja musi wyświetlać różne typy QuizQuestions. Każdy typ QuizQuestion ma wyraźne zachowanie i interfejs użytkownika.
Interfejs użytkownika będzie wyglądał mniej więcej tak:alt tekst http://dl.getdropbox.com/u/907284/Picture%201.png
Chciałbym móc zaprojektować każdy typ QuizQuestion w Interface Builder.
Na przykład MultipleChoiceQuizQuestion wygląda tak:alt tekst http://dl.getdropbox.com/u/907284/Picture%202.png
Pierwotnie planowałem uczynić klasę QuizQuestion kontrolerem UIViewController. Jednak przeczytałem w dokumentacji Apple, że UIViewControllers powinny być używane tylko do wyświetlania całej strony.
Dlatego zrobiłem mój QuizController (który zarządza całym ekranem np. Prev / next przyciski) UIViewController i moja klasa QuizQuestion podklasą UIView.
Aby jednak załadować ten UIView (utworzony w IB), muszę[1] wykonaj w moim konstruktorze następujące czynności:
//MultipleQuizQuestion.m
+(id)createInstance {
UIViewController *useless = [[UIViewController alloc] initWithNibName:@"MultipleQuizQuestion" bundle:nil];
UIView *view = [[useless.view retain] autorelease];
[useless release];
return view; // probably has a memory leak or something
}
Ten typ dostępu nie wydaje się być standardowy ani obiektowy. Czy ten typ kodu jest normalny / akceptowalny? A może gdzieś w moim projekcie dokonałem złego wyboru?
Dziękuję Ci,
edytuj (dla jasności): Chciałbym mieć oddzielną klasę do kontrolowania multipleChoiceView ... jak ViewController, ale najwyraźniej to tylko dla całych okien. Może powinienem utworzyć MultipleChoiceViewManager (nie kontroler!) I zamiast tego ustawić właściciela pliku na to?