標籤:
定義自己的tablecell的方式總結,相關使用TableVIew的教程很多,下面說說我在使用過程中的一些經驗,希望對大家有協助#import "ViewController.h"#import "TableViewCell.h"@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>{ BOOL type; int number;}@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib.}-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return number;}static NSString *cellIdf1 = @"cell1";static NSString *cellIdf2 = @"cell2";static BOOL nibsRegistered = NO;-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ /** 代碼方式建立 */ /** UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdf1]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdf1]; UILabel *title = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(cell.frame), CGRectGetHeight(cell.frame))]; [title setTag:200]; [cell addSubview:cell]; } UILabel *titleLb = (UILabel *)[cell viewWithTag:200]; [titleLb setText:@"test"]; */ /** xib方式 */ /** UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdf1]; if (cell == nil) { //testCellXib 為uitableviewcell 的xib檔案名稱 cell = [[[NSBundle mainBundle] loadNibNamed:@"testCellXib" owner:nil options:nil] lastObject]; } UILabel *titleLb = (UILabel *)[cell viewWithTag:300]; [titleLb setText:@"xibCellTest"]; */ /** UITableViewCell的子類結合xib的方式 */ /** static NSString *CustomCellIdentifier = @"CustomCellIdentifier"; CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CustomCellIdentifier]; if (cell == nil) { NSArray *xib = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:nil options:nil]; cell = [xib lastObject]; } */ /** 使用繼承UITableViewCell的子類CustomCell */ /** static NSString *CustomCellIdentifier = @"CustomCellIdentifier"; CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CustomCellIdentifier]; if (cell == nil) { cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CustomCellIdentifier]; } */ // 通過註冊的方式 先註冊有使用 參考 註冊的部分可以放到 viewDidLoad中 推薦使用有利於cell重複使用,以上的方法在cell中處理的資料太多時滾動不流暢 // - (void)registerNib:(UINib *)nib forCellReuseIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(5_0); // - (void)registerClass:(Class)cellClass forCellReuseIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(6_0); /** 註冊一個 */ /** static NSString *CustomCellIdentifier = @"CustomCellIdentifier"; static BOOL nibsRegistered = NO; if (!nibsRegistered) { [tableView registerNib:[UINib nibWithNibName:@"CustomCellXib" bundle:nil] forCellReuseIdentifier:CustomCellIdentifier]; nibsRegistered = YES; } UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CustomCellIdentifier]; */ // 註冊不同的列表樣式 if (!nibsRegistered) { if (indexPath.row % 2 == 0) { type = 0; [_mTableView registerNib:[UINib nibWithNibName:@"cell1" bundle:nil] forCellReuseIdentifier:cellIdf1]; }else{ type = 1; [_mTableView registerClass:[TableViewCell class] forCellReuseIdentifier:cellIdf2]; } nibsRegistered = YES; } UITableViewCell *cell; if (type == 0) { cell = [tableView dequeueReusableCellWithIdentifier:cellIdf1]; [cell setBackgroundColor:[UIColor redColor]]; [[cell textLabel] setText:@"celll1"]; } if (type == 1) { cell = [tableView dequeueReusableCellWithIdentifier:cellIdf2]; [cell setBackgroundColor:[UIColor greenColor]]; [[cell textLabel] setText:@"cell2"]; } return cell;}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}- (IBAction)segAction:(UISegmentedControl *)sender { number = 10; switch (sender.selectedSegmentIndex) { case 0: type = 0; [_mTableView registerNib:[UINib nibWithNibName:@"cell1" bundle:nil] forCellReuseIdentifier:cellIdf1]; break; case 1: type = 1; [_mTableView registerClass:[TableViewCell class] forCellReuseIdentifier:cellIdf2]; break; default: break; } [_mTableView reloadData];}@end
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
IOS UITableView 使用總結