我正在尝试用子类UIView替换UIViewController根视图。
在iPhone SDK的UIViewController类参考中,在其概述部分中说明了这一点:
您使用UIViewController的每个实例来管理全屏视图。对于简单的视图控制器,这需要管理负责呈现应用程序内容的视图层次结构。典型的视图层次结构包括一个根视图 - 该类的视图属性中可用的引用 - 以及一个或多个呈现实际内容的子视图。
在view属性上的链接之后,它会声明:
如果视图控制器没有关联的视图控制器,则应覆盖loadView方法并使用它创建根视图及其所有子视图。
如果此代码放在loadView中,它会创建根视图,假设我使用自己的UIView子类名为MyView:
self.view = [MyView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
谢谢//:)
答案 0 :(得分:3)
你是对的。需要显示视图时调用loadView函数,viewController的view
属性是使用presentModalViewController:animated:
等函数时显示的视图。如果要从NIB加载视图而不是使用loadView
,则只需在该视图的属性选项卡中将视图的类更改为自定义子类。
答案 1 :(得分:1)
您应该注意,您设置view
属性的任何内容都会被保留。所以你应该使用
self.view = [[[MyView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)] autorelease];
或
MyView *v = [[MyView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
self.view = v;
[v release];
要平衡这一点。