UITableView
上节讲了一下UIView,这节接着讲它的重要子类,UITableView和UITableViewCell
UITableView是UIScrollView的子类,因此用户可以滚动UITableViewCell(UIView的子 类)组成的列表。
UITableView 与 UIScrollView 有很多共同点。对于非数据列表的深度自定义的视图,你可以 使用 UIScrollView 并在里面布置 UIView 或 UIControl 的子类,不过这种情况下使用 UITableView 更有优势。首先,如果可能的话,推荐使用更高级的抽象。其次,UITableView 会自 动实现一些微妙的功能。其中一个是能轻松出列并重用 UITableViewCell单元,这样可以改善性能 并减少内存占用。另一个是通过数据源和接收到的委托方法反馈来填充内容
UITableViewController
UITableViewController 是 UIViewController 的子类,它能实现一些与表视图加载有关的额外功能。如果你正在通过一个 nib 文件初始化 UITableViewController,nib 加载机制会从 nib 文 件载入归档的表视图。如果不是的话,则它会创建一个未配置的表视图。这两种情况下你都可以使用 UITableViewController 类的 tableView 属性来访问表视图。
通常来说,一个UITableView需要通过UITableViewController来指定它的样式。 当一个UITableViewController初始化的时候会创建UITableView的实例然后赋给自身的View属性,同时这个UITableView的两个属性dataSource和delegate都会指向UITableViewController。
@interface ItemsViewController : UITableViewController
#import "ItemsViewController.h" @implementation ItemsViewController - (id)init { self = [super initWithStyle:UITableViewStyleGrouped]; if (self) { } return self; }
调用就如同上节所说的把它设为window的rootViewControlle
#import "ItemsViewController.h" @implementation HomepwnerAppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; ItemsViewController *itemsViewController = [[ItemsViewController alloc] init];
[[self window] setRootViewController:itemsViewController];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
下图就是一个空的UITableView,由UITableViewController创建