屬性說明
- 風格上分為Plain與Grouped。Plain較為方正,Grouped較為圓滑。
- Table view由多個section組成,section包含多個cell。
- NSIndexPath物件用來指引點擊的cell在哪個section中的第幾個cell。
TableView.m
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. myTable.dataSource = self; myTable.delegate = self; dataArray = [[NSArray alloc] initWithObjects:@"one", @"two", @"three", @"four", @"five", nil]; } // 決定section的個數,return 1表示只有一個section - (NSInteger)numberOfSectionInTableView:(UITableView *)tableView { return 1; } // 因為只有一個section,故直接回傳dataArray count,若有多個section要加if-else - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [dataArray count]; } // 決定所要回傳的cell - (UITableView *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // 定義一個名稱,供reuse queue使用 static NSString* CellIdentifier = @"Cell"; UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; // 一開始還沒有queue時,會initial一個新的queue if(cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier]; } cell.textLabel.text = [dataArray objectAtIndex:indexPath.row]; return cell; } // 取得使用者所按到的cell - (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"Selected %@", [dataArray objectAtIndex:indexPath.row]); } |
UITableViewCell 樣式-----
AccessoryType = UITableViewCellAccessoryDisclosureIndicator
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. myTable.dataSource = self; myTable.delegate = self; dataArray = [[NSArray alloc] initWithObjects:@"one", @"two", @"three", @"four", @"five", nil]; subArray = [[NSArray alloc] initWithObjects:@"1", @"2", @"3", @"4", @"5", nil]; } // 決定所要回傳的cell - (UITableView *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // 定義一個名稱,供reuse queue使用 static NSString* CellIdentifier = @"Cell"; UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; // 一開始還沒有queue時,會initial一個新的queue if(cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; } cell.textLabel.text = [dataArray objectAtIndex:indexPath.row]; cell.detailTextLabel.text = [subArray objectAtIndex:indexPath.row]; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; return cell; } |
AccessoryType = UITableViewCellAccessoryDetailDisclosureButton
// 決定所要回傳的cell - (UITableView *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // 定義一個名稱,供reuse queue使用 static NSString* CellIdentifier = @"Cell"; UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; // 一開始還沒有queue時,會initial一個新的queue if(cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; } cell.textLabel.text = [dataArray objectAtIndex:indexPath.row]; cell.detailTextLabel.text = [subArray objectAtIndex:indexPath.row]; cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; return cell; } // 當按下藍色按鈕時,呼叫此方法 - (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath { NSLog(@"Press %@ button", [dataArray objectAtIndex:indexPath.row]); } |
資料出處《Object-C與iOS開發入門》
沒有留言:
張貼留言