好的,这里已经给出的答案有很多混乱......
首先,您不打电话是正确的[super loadView];
,请参阅- (void)loadView
:
如果您重写此方法以手动创建视图,您应该这样做并将层次结构的根视图分配给视图属性。(您创建的视图应该是唯一的实例,并且不应与任何其他视图控制器对象共享。)此方法的自定义实现不应调用 super.
如果您真的打算使用loadView
(即以编程方式创建视图,而不是从NIB),那么在您的实现中,您必须分配view
控制器的属性。
此外,您不需要按照使用按钮的方式保留按钮,因为您将其添加为主视图的子视图(之后您的主视图将拥有它)。
基于这些考虑,您的方法将如下所示:
-(void)loadView {
CGRect frame = [[UIScreen mainScreen] applicationFrame]; // adjust to your needs
UIView *rootView = [[UIView alloc] initWithFrame:frame];
UIButton *chooseSubjectButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
chooseSubjectButton.frame = CGRectMake(15.0f, 205.0f, 296.0f, 51.0f);
[chooseSubjectButton addTarget:self action:@selector(chooseSubject) forControlEvents:UIControlEventTouchUpInside];
[rootView addSubview:chooseSubjectButton];
self.view = rootView;
[rootView release];
}
当然,如果你使用 NIB 来定义你的根视图,你需要重写-viewDidLoad:
以进行额外的配置。
希望这可以帮助。