当我删除[super loadView]时;视图不会显示。超类是UIViewController。
- (void)loadView
{
[super loadView];
UITableView *tableview = [[UITableView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 367.0f) style:UITableViewStylePlain];
tableview.dataSource = self;
tableview.delegate = self;
self.tableView = tableview;
[tableview release];
[self.view addSubview:self.tableView];
}
知道为什么吗?提前谢谢!
答案 0 :(得分:5)
1)UIViewController Class Reference, loadView section
此方法的自定义实现不应调用super。
2)你必须将view
属性设置为某种东西。毕竟这个方法被称为loadView
:)。而不是[self.view addSubview:self.tableView];
尝试
self.view = tableView;
答案 1 :(得分:2)
如果查看视图编程指南,它会提到如果覆盖[loadView],则应构建自己的视图。
默认的loadView会查看一堆东西,比如先从nib加载,然后构造普通视图。
因此,只需构建一个视图,并将其分配给self.view -
UIView * view = [[UIView alloc] initWithFrame ...]; self.view = view; [查看发布];
然后应该没问题。
编辑:代码示例:
- (void)loadView
{
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 367.0f)];
self.view = view;
[view release];
UITableView *tableview = [[UITableView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 367.0f) style:UITableViewStylePlain];
tableview.dataSource = self;
tableview.delegate = self;
self.tableView = tableview;
[tableview release];
[self.view addSubview:self.tableView];
}
edit2:链接到viewcontroller编程指南: http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/BasicViewControllers/BasicViewControllers.html#//apple_ref/doc/uid/TP40007457-CH101-SW1
查看自定义视图控制器部分,以编程方式创建视图,以及该文档中的其他几个位置。
答案 2 :(得分:0)
我想你想在addSubview之后移动那个[tableview发布]。
答案 3 :(得分:0)
这是因为您从未在代码中分配视图属性。当您在最后一行访问view属性时,会导致再次调用-loadView
,这会导致无限循环。