дизайн подзаписи iPhone (UIView vs UIViewController)

Я разрабатываю простое приложение для викторины. Приложение должно отображать различные типы QuizQuestions. Каждый тип QuizQuestion имеет свое поведение и пользовательский интерфейс.

Интерфейс пользователя будет примерно таким: alt text http://dl.getdropbox.com/u/907284/Picture% 201.png

Я хотел бы иметь возможность проектировать каждый тип QuizQuestion в Интерфейсном Разработчике.

Например, MultipleChoiceQuizQuestion будет выглядеть так: alt text http://dl.getdropbox.com/u/907284/Picture% 202.png

Изначально я планировал сделать класс QuizQuestion UIViewController. Однако я прочитал в документации Apple, что UIViewControllers следует использовать только для отображения всей страницы.

Поэтому я сделал свой QuizController (который управляет всем экраном, например кнопками prev /next) UIViewController, а мой класс QuizQuestion - подклассом UIView.

Однако, чтобы загрузить этот UIView (созданный в IB), я должен [1] в моем конструкторе сделайте следующее:

//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
}

Этот тип доступа не выглядит стандартным или объектно-ориентированным. Является ли этот тип кода нормальным /приемлемым? Или я сделал плохой выбор где-то в своем дизайне?

Thankyou,

edit (для ясности): Я хотел бы иметь отдельный класс для управления множественным представлением ... как ViewController, но, очевидно, это только для целых окон. Может быть, я должен сделать MultipleChoiceViewManager (не контроллер!) И установить вместо него владельца файла?

7 голосов | спросил tba 12 AM00000090000001931 2009, 09:07:19

0 ответов


Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132