当一个view上显示的内容能够用一个UITableView实现,可以通过子类化一个UITableViewController控制器,上面提供了一个UITableView对象,不需要自己维护其frame,使用起来还是挺方便的。但是当在该控制器的view上添加其他的视图时,会出现无论如何都会添加的self.tableView上,原因是在UITableViewController子类中,self.view和self.tableView都是同一个对象,都是一个UITableView。本文主要是分离self.tableView和self.view,以达到能够在self.view上添加其他view,方法如下:
1、在- (void)viewDidLoad或者- (void)loadView方法添加如下代码:
UITableView *tableView = (UITableView *)self.view;
self.view = [[[UIView alloc] init] autorelease];
tableView.frame = self.view.bounds;
self.tableView = tableView;
2、重写self.tableView的get方法和set方法
- (void) setTableView:(UITableView *)tableView {
[self.tableView removeFromSuperview];
[self.view addSubview:tableView];
}
- (UITableView *) tableView {
for (UIView *v in self.view.subviews) {
if ([v isKindOfClass:[UITableView class]]) {
return (UITableView *)v;
}
}
return nil;
}
通过以上方法即可分离UITableViewController子类中self.tableView和self.view了。