7

我正在尝试用子类 UIView 替换 UIViewController 根视图。

在 iPhone SDK 的 UIViewController 类参考中,在它的概述部分中,有这样的说明:

您使用 UIViewController 的每个实例来管理全屏视图。对于一个简单的视图控制器,这需要管理负责呈现应用程序内容的视图层次结构。一个典型的视图层次结构由一个根视图(在此类的视图属性中提供的一个引用)和一个或多个呈现实际内容的子视图组成。

按照 view 属性上的链接,它然后指出:

如果您的视图控制器没有关联的视图控制器,您应该重写 loadView 方法并使用它来创建根视图及其所有子视图。

如果将此代码放在 loadView 中,它是否会创建根视图,假设我使用的是我自己的 UIView 子类 MyView:

self.view = [MyView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];

谢谢 // :)

4

2 回答 2

6

你是对的。loadView 函数在需要显示视图时调用,viewController 的view属性是使用presentModalViewController:animated:. 如果您从 NIB 加载视图而不是使用loadView,则只需在该视图的属性选项卡中将视图的类更改为您的自定义子类。

于 2009-10-14T02:50:15.817 回答
1

You should note that anything you set the view property to gets retained. So you should either use

self.view = [[[MyView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)] autorelease];

or

MyView *v = [[MyView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
self.view = v;
[v release];

to balance that out.

于 2009-10-14T05:06:54.700 回答