【发布时间】:2010-11-18 20:31:57
【问题描述】:
我正在设计一个简单的测验应用程序。应用程序需要显示不同类型的 QuizQuestions。每种类型的 QuizQuestion 都有不同的行为和 UI。
用户界面将如下所示: alt text http://dl.getdropbox.com/u/907284/Picture%201.png
我希望能够在 Interface Builder 中设计每种类型的 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
}
这种类型的访问似乎不是标准的或面向对象的。这种类型的代码是否正常/可接受?还是我在设计的某个地方做出了错误的选择?
谢谢,
编辑(为了清楚起见):我想有一个单独的类来控制 multipleChoiceView...就像一个 ViewController 但显然这只适用于整个窗口。也许我应该创建一个 MultipleChoiceViewManager(不是控制器!)并将 File's Owner 设置为那个?
【问题讨论】:
标签: objective-c iphone cocoa-touch uiview uiviewcontroller