iOS學習筆記—— UItableView 控制項的簡單使用
UITableView 可以說是iOS開發中最常用的控制項,除了遊戲之外,幾乎所有的應用中獨會出現他的身影。
使用UITableView控制項需要遵守兩種協議 UITableViewDelegate和 UITableViewDataSource<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPqGjPC9wPgo8cD4KICAgICAgICA8c3Ryb25nPrOj08O3vbeoyOfPwqO6PC9zdHJvbmc+PC9wPgo8cD4KICAgICAgICAgICAgMS63tbvYo6jDv7j2t9bH+KOpse21pdSquPbK/aOo0NDK/aOpPC9wPgo8cD4KICAgICAgICAgICAgICAgICAtIChOU0ludGVnZXIpIHRhYmxlVmlldzogKFVJdGFibGVWaWV3ICopIHRhYmxlVklldzwvcD4KPHA+CiAgICAgICAgICAgICAgbnVtYmVyT2ZSb3dzSW5TZWN0aW9uOiAoTlNJbnRlZ2VyKXNlY3Rpb24gICA8L3A+CjxwPgogICAgICAgICAgICAyLre1u9ix7bWl1KrQxc+iPC9wPgo8cD4KICAgICAgICAgICAgICAgIC0gKFVJVGFibGVWaWV3Q2VsbCkgdGFibGVWaWV3OiAoVUlUYWJsZVZJZXcgKikgdGFibGVWaWV3PC9wPgo8cD4KICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsRm9yUm93QXRJbmRleFBhdGg6IChOU0ludGVnZXIpIGluZGV4UGF0aDwvcD4KPHA+CiAgICAgICAgICAgIDMut9bH+Mr9PC9wPgo8cD4KPC9wPgo8cD4KICAgICAgICAgICAgLSAoTlNJbnRlZ2VyKW51bWJlck9mU2VjdGlvbnNJblRhYmxlVmlldzooVUlUYWJsZVZpZXcgKil0YWJsZVZpZXc8YnI+CjwvcD4KPHA+CiAgICAgICAgICAgICAgIMno1sO31sf4w/uzxjwvcD4KICAgICAgICAgICAgLSAoTlNTdHJpbmcgKil0YWJsZVZpZXc6KFVJVGFibGVWaWV3ICopdGFibGVWaWV3IAo8cD4KICAgICAgICAgICB0aXRsZUZvckhlYWRlckluU2VjdGlvbjooTlNJbnRlZ2VyKXNlY3Rpb247PGJyPgo8L3A+CjxwPgogICAgICAgICAgICA0LtGh1tDEs9DQuvO1xM/s06a6r8r9PC9wPgo8cD4KICAgICAgICAgICAgICAgICAtICh2b2lkKSB0YWJsZVZJZXc6IChVSVRhYmxlVmlldyAqKXRhYmxlVmlldzwvcD4KPHA+CiAgIGRpZFNlbGVjdFJvd0F0SW5kZXhQYXRoOiAoTlNJbmRleFBhdGggKikgaW5kZXhQYXRoPC9wPgo8cD4KPGJyPgo8L3A+CjxwPgogICAgICAgICAgICA1LiCx4Lytse21pdSqo6jM7bzToaLJvrP9o6k8L3A+CjxwPgogICAgICAgICAgICAgICAgLSAodm9pZCkgdGFibGVWaWV3OiAoVUlUYWJsZVZpZXcpIHRhYmxlVmlldzwvcD4KPHA+CiAgICAgICAgICAgIGNvbW1vdEVkaXRpbmdTdHlsZTogKFVJVGFibGVWaWV3Q2VsbEVkaXRpbmdTdHl0bGUpZWRpdGluZ1N0eXRsZTwvcD4KPHA+CiAgICAgICAgICAgICBmb3JSb3dBdEluZGV4UGF0aDogKE5TSW5kZXhQYXRoICopIGluZGV4UGF0aDwvcD4KPHA+CiAgICAgICAgICAgICAgLnAucyDWuLaoyb6z/bC0xaWx6sziPC9wPgo8cD4KICAgICAgICAgICAgIC0gKE5TU3RyaW5nICopIHRhYmxlVmlldzogKFVJdGFibGVWaWV3ICopdGFibGVWaWV3PC9wPgo8cD4KdGl0bGVGb3JEZWxldGVDb25maXJtYXRpb25CdXR0b25Gb3JSb3dBdEluZGV4UGF0aDogKE5TSW5kZXhQYXRoICopaW5kZXhQYXRoPC9wPgo8cD4KICAgICAgICAgICAgNi6x7bWl1KrSxravPC9wPgo8cD4KICAgICAgICAgICAgLSAodm9pZCl0YWJsZVZpZXc6IChVSVRhYmxlVmlldyAqKSB0YWJsZVZpZXc8L3A+CjxwPgogICBtb3ZlUm93QXRJbmRleFBhdGg6IChOU0luZGV4UGF0aCAqKSBmcm9tSW5kZXhQYXRoPC9wPgo8cD4KICAgICAgICAgICAgICAgICAgIHRvSW5kZXhQYXRoOiAoTlNJbmRleFBhdGggKikgdG9JbmRleFBhdGg8L3A+CjxwPgogICAgICAgICAgICAucC5zINTK0O3SxravPC9wPgo8cD4KICAgICAgICAgICAgLSAoQk9PTCl0YWJsZVZpZXc6IChVSVRhYmxlVmlldyAqKSB0YWJsZVZpZXc8L3A+CjxwPgogY2FuTW92ZVJvd0F0SW5kZXhQYXRoOiAoTlNJbmRleFBhdGggKikgaW5kZXhQYXRoIDwvcD4KPHA+CiAgICAgICAgICAgLnAucyDUytDtseC8rTwvcD4KPHA+CiAgICAgICAgICAgIC0oQk9PTCl0YWJsZVZpZXc6IChVSVRhYmxlVmlldyAqKSB0YWJsZVZpZXc8L3A+CjxwPgogIGNhbkVkaXRSb3dBdEluZGV4UGF0aDooTlNJbmRleFBhdGggKilpbmRleFBhdGg8YnI+CjwvcD4KPHA+CiAgICAgICA8L3A+CjxwPgogICAgICAgICAgIDcu09Ky4MztvNPSu7j2y/fS/bHtPC9wPgo8cD4KICAgICAgICAgICAgLSAoTlNBcnJheSAqKXNlY3Rpb25JbmRleFRpdGxlc0ZvclRhYmxlVmlldzooVUlUYWJsZVZpZXcgKil0YWJsZVZpZXc8YnI+CjwvcD4KPHA+CiAgICAgICAgICAgOC678cihxLPSu9DQtcTQxc+iPC9wPgo8cD4KPC9wPgo8cD4gICAgICAgICAgICAtIChVSVRhYmxlVmlld0NlbGwgKiljZWxsRm9yUm93QXRJbmRleFBhdGg6KE5TSW5kZXhQYXRoICopaW5kZXhQYXRoOzwvcD4KPHA+CjwvcD4KPHA+CiAgICAgICAgICAgOS7J6NbDse21pdSquN+2yKOo0NC436OpPC9wPgoKPHA+CiAgICAgICAgICAgIC0gKENHRmxvYXQpIHRhYmxlVmlldzogKFVJdGFibGVWaWV3ICopIHRhYmxlVmlldzwvcD4KPHA+CiAgICAgaGVpZ2h0Rm9yUm93QXRJbmRleFBhdGg6IChOU0luZGV4UGF0aCAqKSBpbmRleFBhdGg8L3A+CjxwPgogICAgICAgICAgIDEwLsno1sO1pdSqJiMyNjY4NDvR1cmrPC9wPgo8cD4KICAgICAgICAgICAgIC0gKHZvaWQpIHRhYmxlVmlldzogKFVJVGFibGVWaWV3ICopIHRhYmxlVklldzwvcD4KPHA+CiAgICAgICAgICAgICAgICAgIHdpbGxEaXNwbGF5Q2VsbDogKFVJVGFibGVWaWV3Q2VsbCAqKSBjZWxsPC9wPgo8cD4KICAgICAgICAgICBmb3JSb3dBdEluZGV4UGF0aDogKE5TSW5kZXhQYXRoICopIGluZGV4UGF0aDwvcD4KPHA+CiAgICAgICAgICAgMTEuIMno1sOx7bWl1KrOxLG+y/W9+DwvcD4KPHA+CiAgICAgICAgICAgIC0gKE5TSW50ZWdlcikgdGFibGVWSWV3OiAoVUlUYWJsZVZpZXcgKikgdGFibGVWaWV3PC9wPgo8cD4KaW5kZW50YXRpb25MZXZlbEZvclJvd0F0SW5kZXhQYXRoOiAoTlNJbmRleFBhdGggKikgaW5kZXhQYXRoPC9wPgo8cD4KPGJyPgo8L3A+CjxwPgogICAgICAgICAgMTIuIMztvNPSs8O8oaLSs73FPC9wPgo8cD4KICAgICAgICAgICAgLSAoTlNTdHJpbmcgKikgdGFibGVWaWV3OiAoVUlUYWJsZVZpZXcpIHRhYmxlVmlldzwvcD4KPHA+CiAgICAgICAgICAgIHRpdGxlRm9ySGVhZGVySW5TZWN0aW9uOiAoTlNJbnRlZ2VyKSBzZWN0aW9uPC9wPgo8cD4KICAgICAgICAgICAgLSAoTlNTdHJpbmcgKikgdGFibGVWaWV3OiAoVUlUYWJsZVZpZXcpIHRhYmxlVmlldzwvcD4KPHA+CiAgICAgICAgICAgICB0aXRsZUZvckZvb3RlckluU2VjdGlvbjogKE5TSW50ZWdlcikgc2VjdGlvbjwvcD4KPHA+Cjxicj4KPC9wPgo8cD4KICAgICAgICA8c3Ryb25nPs/Czqqzo9PDtPrC68asts6jujwvc3Ryb25nPjwvcD4KPHA+CiAgICAgICAgMS7J6NbDse21pdSq0MXPojwvcD4KPHA+CjwvcD4KPHByZSBjbGFzcz0="brush:java;">- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *CellWithIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellWithIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellWithIdentifier]; } NSUInteger row = [indexPath row]; cell.textLabel.text = [dataList objectAtIndex:row]; return cell;}
2. 進入編輯狀態(刪除,移動)
- (IBAction)Del:(id)sender { [_tableView setEditing:!_tableView.editing animated:YES]; if (_tableView.editing) [_DeleteButtonTitle setTitle:@"Done" forState:UIControlStateNormal]; else [_DeleteButtonTitle setTitle:@"Delete" forState:UIControlStateNormal];}
3.左滑刪除
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{ // 左滑刪除 if (editingStyle == UITableViewCellEditingStyleDelete) { [dataList removeObjectAtIndex: indexPath.row]; [_tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject: indexPath] withRowAnimation: UITableViewRowAnimationAutomatic]; }}
4.選中並標記某行
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ // 選中響應函數(標記) UITableViewCell *cellView = [tableView cellForRowAtIndexPath:indexPath]; if (cellView.accessoryType == UITableViewCellAccessoryNone) cellView.accessoryType = UITableViewCellAccessoryCheckmark; else cellView.accessoryType = UITableViewCellAccessoryNone;}
5.行動程式碼- (BOOL)tableView:(UITableView *)tableViewcanMoveRowAtIndexPath:(NSIndexPath *)indexPath { return YES;}- (void)tableView:(UITableView *)tableViewmoveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { NSUInteger fromRow = [fromIndexPath row]; NSUInteger toRow = [toIndexPath row]; id object = [dataList objectAtIndex:fromRow]; [dataList removeObjectAtIndex:fromRow]; [dataList insertObject:object atIndex:toRow];}