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建立