我正在设计一个简单的测验应用程序。该应用程序需要显示不同类型的测验问题。每种测验问题都有独特的行为和用户界面。
用户界面将类似于这样: alt text http://dl.getdropbox.com/u/907284/Picture%201.png 我希望能够在Interface Builder中设计每种类型的测验问题。
例如,多选测验问题将如下所示: alt text http://dl.getdropbox.com/u/907284/Picture%202.png 最初,我计划将QuizQuestion类作为UIViewController。然而,我在苹果文档中读到UIViewControllers只应用于显示整个页面。
因此,我将我的QuizController(管理整个屏幕,例如上一页/下一页按钮)作为UIViewController,并将我的QuizQuestion类作为UIView的子类。
这种访问方式似乎不是标准的面向对象的。这种代码类型正常/可接受吗?还是我的设计中某处出现了问题?谢谢。
编辑(为了更清晰):我想要一个单独的类来控制multipleChoiceView...像一个ViewController,但显然只适用于整个窗口。也许我应该创建一个MultipleChoiceViewManager(而不是controller!),并将文件的所有者设置为它?
用户界面将类似于这样: alt text http://dl.getdropbox.com/u/907284/Picture%201.png 我希望能够在Interface Builder中设计每种类型的测验问题。
例如,多选测验问题将如下所示: alt text http://dl.getdropbox.com/u/907284/Picture%202.png 最初,我计划将QuizQuestion类作为UIViewController。然而,我在苹果文档中读到UIViewControllers只应用于显示整个页面。
因此,我将我的QuizController(管理整个屏幕,例如上一页/下一页按钮)作为UIViewController,并将我的QuizQuestion类作为UIView的子类。
然而,要加载此在IB中创建的UIView,我必须在我的构造函数中[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(而不是controller!),并将文件的所有者设置为它?