一:UITableView的幾個重要屬性app
1,style樣式, 在初始化時設置ui
- (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style;atom
其中UITableViewStyle枚舉類型爲:spa
typedef NS_ENUM(NSInteger, UITableViewStyle) {代理
UITableViewStylePlain, // regular table view索引
UITableViewStyleGrouped // preferences style table view事件
};圖片
2,separatorStyle 分割線樣式內存
@property (nonatomic) UITableViewCellSeparatorStyle separatorStyle;it
其中UITableViewCellSeparatorStyle枚舉類型
typedef NS_ENUM(NSInteger, UITableViewCellSeparatorStyle) {
UITableViewCellSeparatorStyleNone,
UITableViewCellSeparatorStyleSingleLine,
UITableViewCellSeparatorStyleSingleLineEtched // This separator style is only supported for grouped style table views currently
};
3,separatorColor 分割線顏色
@property (nonatomic, retain) UIColor *separatorColor
UI_APPEARANCE_SELECTOR; // default is the standard separator gray
4,rowHeight 行高
@property (nonatomic) CGFloat rowHeight; // will return the default value if unset
5,delegate控制代理
@property (nonatomic, assign) id <UITableViewDataSource> dataSource;
6,dataSource數據代理
@property (nonatomic, assign) id <UITableViewDelegate> delegate;
二,UITableView基本配置
1,UITableViewDataSource協議
@required
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; //沒個分區的行數
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;//配置cell
@optional
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView; // Default is 1 if not implemented
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView; //section索引的title集合
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section; //設置頭部標題
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section; //設置尾部標題
2,UITableViewDelegate協議
1>-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath //設置cell行高
2>-(NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath //設置cell的縮進級別
3>-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)sectionn //設置頭部
4>-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section //設置尾部
三,UITableViewCell
1,cell的基本組成; 編輯,內容,輔助
1>編輯 editView,tableView被編輯時顯示
2>內容 包括imageView,textLabel,detailTextLabel
3>輔助 accessoryView 顯示cell的輔助信息
2,cell定製
1>imageView //圖片
2>textLabel //文本
3>detailTextLabel //詳情
4>selectStyle //選中效果
有以下四種選中效果
typedef NS_ENUM(NSInteger, UITableViewCellSelectionStyle) {
UITableViewCellSelectionStyleNone,
UITableViewCellSelectionStyleBlue,
UITableViewCellSelectionStyleGray,
UITableViewCellSelectionStyleDefault NS_ENUM_AVAILABLE_IOS(7_0)
};
5>accessoryType //輔助效果
輔助效果爲以下枚舉類型
typedef NS_ENUM(NSInteger, UITableViewCellAccessoryType) {
UITableViewCellAccessoryNone, // don't show any accessory view
UITableViewCellAccessoryDisclosureIndicator, // regular chevron. doesn't track
UITableViewCellAccessoryDetailDisclosureButton, // info button w/ chevron. tracks
UITableViewCellAccessoryCheckmark, // checkmark. doesn't track
UITableViewCellAccessoryDetailButton NS_ENUM_AVAILABLE_IOS(7_0) // info button. tracks
};
6>accessoryView 自定義設置頭邊的輔助按鈕 //accessoryView的返回值類型爲UIView
7>indentationLevel //縮進
3,cell控制
1> -(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath //當accessoryType設置爲button類型時,監聽事件
2> -(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath //cell 即將被選中是觸發
3>-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath //cell已經被選中時觸發
4>-(NSIndexPath *)tableView:(UITableView *)tableView willDeselectRowAtIndexPath:(NSIndexPath *)indexPath //cell即將被取消時觸發
5>-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath //cell被取消時觸發
***tableView的一個方法(不是代理方法)[tableView deselectRowAtIndexPath:<#(NSIndexPath *)#> animated:<#(BOOL)#>]//設置選中點擊效果
4,cell的自定義
注意,設置行高的方法,是在初始化cell以前執行的。
1> 因此要想根據數據源中數據的大小來顯示設置cell的行高,必需要在設置行高的方法中計算數據源中每一項的高度
即在-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 方法內部計算數據源中數據的高度,並返回
2>
-(void)layoutSublayersOfLayer:(CALayer *)layer
{
[super layoutSublayersOfLayer:layer];
//在cell配置方法中進行賦值,而在該方法中進行對cell中屬性的其它操做
}
四:cell的重用機制
1,row是tableView中每條數據展現的位置,cell是負責添加到row上展現相應地數據。
2,cell的數量,取決於屏幕所能顯示的行數
3,cell重用機制的優勢:節省內存空間