在iOS中,要實現表格數據展示,最常用的做法就是使用UITableView
UITableView繼承自UIScrollView,因此支持垂直滾動,而且性能極佳
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
UITableViewCellAccessoryDisclosureIndicator
UITableViewCellAccessoryDetailDisclosureButton
UITableViewCellAccessoryCheckmark
UITableViewCellStyleDefault
UITableViewCell對象的話,那將會耗盡iOS設備的內存。要解決該問題,需要重用
UITableViewCell對象
外的UITableViewCell放入一個對象池中,等待重用。當UITableView要求dataSource
返回UITableViewCell時,dataSource會先查看這個對象池,如果池中有未使用的
UITableViewCell,dataSource會用新的數據配置這個UITableViewCell,然后返回
給UITableView,重新顯示到窗口中,從而避免創建新對象
而且每一行用的不一定是同一種UITableViewCell,所以一個UITableView可能擁有不同類型的UITableViewCell,
對象池中也會有很多不同類型的UITableViewCell,那么UITableView在重用UITableViewCell時可能會得到錯誤類型的UITableViewCell
一個特定的字符串標識來設置reuseIdentifier(一般用UITableViewCell的類名)。當UITableView要求dataSource
返回UITableViewCell時,先通過一個字符串標識到對象池中查找對應類型的UITableViewCell對象,如果有,就重用,
如果沒有,就傳入這個字符串標識來初始化一個UITableViewCell對象
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// 1.定義一個cell的標識
static NSString *ID = @"mjcell";
// 2.從緩存池中取出cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
// 3.如果緩存池中沒有cell
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];
}
// 4.設置cell的屬性...
return cell;
}
新聞熱點
疑難解答