UITableView
是iOS
開發(fā)中使用最頻繁稽穆,也是最重要的視圖控件,在常用的APP
中隨處可見。它繼承于UIScrollView
独榴,可以滾動侦厚。
UITableView
的每一條數(shù)據對應的單元格叫做Cell
,是UITableViewCell
(繼承于UIView
)的一個對象劲阎。UITableView
可以分區(qū)顯示绘盟,每個分區(qū)稱為section
,每一行稱為row
,編號都從0開始。系統(tǒng)為我們提供了一個專門的類來整合section
和row
悯仙,叫做NSIndexPath
龄毡。section
和row
代表一個UITableViewCell
在UITableView
上的位置。如下圖中锡垄,北京的位置為第1個分區(qū)第0行沦零。
UITableView
有兩種樣式:UITableViewStylePlain
和UITableViewStyleGrouped
。這兩者操作起來其實并沒有本質區(qū)別货岭,只是前者按照普通樣式顯示路操,后者按分組樣式顯示而已。以下分別為這兩種樣式的基本效果:
UITableView
顯示的相關屬性:
//設置每一行cell的高度
self.tableView.rowHeight = 80;
//設置每一組的頭部標題高度
self.tableView.sectionHeaderHeight = 50;
//設置每一組的尾部標題高度
self.tableView.sectionFooterHeight = 50;
//設置分割線的顏色
self.tableView.separatorColor = [UIColor redColor];
//設置分割線的樣式
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
//設置表頭控件---這里主要應用是打廣告
self.tableView.tableHeaderView = [[UISwitch alloc] init];
//設置表尾控件---這里主要應用是加載數(shù)據
self.tableView.tableFooterView = [[UISwitch alloc] init];
//設置索引條的文字顏色
self.tableView.sectionIndexColor = [UIColor orangeColor];
//設置索引條的背景顏色
self.tableView.sectionIndexBackgroundColor = [UIColor yellowColor];UITableView
中兩個重要的協(xié)議:
1.委托協(xié)議UITableViewDelegate
:用于定義節(jié)頭和節(jié)尾視圖以及響應觸摸事件千贯。
@optional
//設置每一行的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
//設置每一個分區(qū)的頂部自定義視圖
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section屯仗;
//設置每一個分區(qū)的頂部高度
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
//告訴delegate選中了一個cell
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
2.數(shù)據源協(xié)議UITableViewDataSource
:用于定義表視圖的數(shù)據源和視圖樣式。
@required
//設置每個分區(qū)的行數(shù)
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection: (NSInteger)section;
//tableView每次要顯示一個cell都會調用這個方法獲取
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
@optional
//設置分區(qū)個數(shù)
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView搔谴;
//設置分區(qū)標題
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section魁袜;
//設置索引欄數(shù)據
- (NSArray<NSString *> *)sectionIndexTitlesForTableView:(UITableView *)tableView
//設置分區(qū)底部標題
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section;
-
UITableView
重用cell
的代碼流程:
1.在創(chuàng)建UITableView
之后敦第,需要注冊一個cell
類峰弹,當重用池中沒有cell
的時候,系統(tǒng)可以自動創(chuàng)建cell
:
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"MyCell"];
2.系統(tǒng)提供了一個獲取重用池中cell
的方法(需要提供一個重用標識):
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyCell" forIndexPath:indexPath];
// do something
return cell;
}
以上內容是筆者對
UITableView
基礎的總結芜果。由于筆者也是iOS
初學者鞠呈,總結過程中難免出現(xiàn)紕漏。如發(fā)現(xiàn)不足或錯誤右钾,歡迎批評指正蚁吝。大家共同學習!共同進步霹粥!
有關UITableView
和iOS
的更多知識灭将,請關注小編,期待后續(xù)文章后控!