UI基礎知識匯總 (part 2)
代碼部分
UITableView數(shù)據(jù)源方法
-
設置控制器為UITableView的數(shù)據(jù)源(別忘了遵守<UITableViewDataSource>協(xié)議)
self.tableView.dataSource = self;
-
返回一共有多少組數(shù)據(jù)的方法
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return self.groups.count; }
-
返回每組有多少行數(shù)據(jù)的方法
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { //獲取模型數(shù)據(jù) WMUGroup *group = self.groups[section]; return group.cars.count; }
-
返回每行要顯示的cell的方法
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { //1.獲取模型數(shù)據(jù) WMUGroup *group = self.groups[indexPath.section]; WMUCar *car = group.cars[indexPath.row]; //2.創(chuàng)建cell static NSString *ID = @"car_cell"; //2.1利用標識符ID重用cell UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; //2.2如果緩存池中沒有能重用的cell if (cell == nil) { //2.3那么才創(chuàng)建新的cell并綁定標識符 cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID]; } //3.設置cell屬性 cell.textLabel.text = car.name; cell.imageView.image = [UIImage imageNamed:car.icon]; //3.1設置cell最右側的輔助指示圖標 cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; //3.2在cell的最右側添加一個開關 cell.accessoryView = [[UISwitch alloc] init]; //4.返回cell return cell; }
-
設置頭標題的方法
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { WMUGroup *group = self.groups[section]; return group.title; }
-
設置尾部描述文字的方法
-(NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section { //取出模型 WMUCar *car = self.cars[section]; //返回模型中的品牌系描述屬性 return car.desc; }
-
顯示右邊索引欄方法
-(NSArray<NSString *> *)sectionIndexTitlesForTableView:(UITableView *)tableView { //kvc取值法 return [self.groups valueForKeyPath:@"title"]; }
-
設置cell之間分隔線的顏色
self.tableView.separatorColor = [UIColor redColor];
-
設置分割線樣式
self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
-
添加一個headView
self.tableView.tableHeaderView = [[UISwitch alloc] init];
-
添加一個footerView
self.tableView.tableFooterView = [UIButton buttonWithType:UIButtonTypeContactAdd];
UITableView的代理方法
-
讓控制器成為UITableView的代理(別忘了遵守<UITableViewDelegate>協(xié)議)
self.tableView.delegate = self;
-
設置行高的代理方法
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.row % 2 == 0) { return 60; } else { return 100; } }
-
選中某行的的代理方法
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { }