標籤:
複雜模型分組展示
#import "HMViewController.h"#import "HMCarGroup.h"#import "HMCar.h"@interface HMViewController () <UITableViewDataSource>@property (nonatomic, strong) NSArray *carGroups;@property (nonatomic, strong) UITableView *tableView;@end@implementation HMViewController- (UITableView *)tableView{ if (_tableView == nil) { _tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain]; _tableView.dataSource = self; [self.view addSubview:_tableView]; } return _tableView;}- (NSArray *)carGroups{ if (_carGroups == nil) { _carGroups = [HMCarGroup carGroups]; } return _carGroups;}- (void)viewDidLoad{ [super viewDidLoad]; // 調用tableView添加到視圖 [self tableView];}#pragma mark - 資料來源方法// 分組總數- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return self.carGroups.count;}// 每一組的總數- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ HMCarGroup *group = self.carGroups[section]; return group.cars.count;}// 儲存格- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ // 可重用標示符 static NSString *ID = @"Cell"; // 讓表格緩衝區尋找可重用cell UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; // 如果沒有找到可重用cell if (cell == nil) { // 執行個體化cell cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID]; } // 設定cell內容 // 1> 取出資料模型 HMCarGroup *group = self.carGroups[indexPath.section]; HMCar *car = group.cars[indexPath.row]; // 2> 設定資料 cell.imageView.image = [UIImage imageNamed:car.icon]; cell.textLabel.text = car.name; return cell;}// 標題- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{ // 找到group HMCarGroup *group = self.carGroups[section]; return group.title;}// 右側索引列表- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{ // 索引數組中的"內容",跟分組無關 // 索引數組中的下標,對應的是分組的下標// return @[@"哇哈哈", @"hello", @"哇哈哈", @"hello", @"哇哈哈", @"hello", @"哇哈哈", @"hello"]; // 返回self.carGroup中title的數組// NSMutableArray *arrayM = [NSMutableArray array];// for (HMCarGroup *group in self.carGroups) {// [arrayM addObject:group.title];// }// return arrayM; // KVC是cocoa的大招 // 用來間接擷取或者修改對象屬性的方式 // 使用KVC在擷取數值時,如果指定對象不包含keyPath的"鍵名",會自動進入對象的內部尋找 // 如果取值的對象是一個數組,同樣返回一個數組 NSArray *array = [self.carGroups valueForKeyPath:@"cars.name"]; NSLog(@"%@", array); return [self.carGroups valueForKeyPath:@"title"];}@end
IOS第七天(5:UiTableView 汽車品牌,複雜模型分組展示,A-Z索要列表) (2015-08-05 14:03)