自定義UITableViewCell有兩種方法:
1.較早版本 子類UITableViewCell 並利用xib構造
2.利用storyboard直接自定義cell
1.利用xib
設計好自定義的cell並且連接好控件后 有兩種方法引用我們自己的cell
方法1:
1 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 2 { 3 static NSString *cellIdentifier=@"name"; 4 BOOL nibsRegistered=NO; 5 if (!nibsRegistered) { 6 UINib *nib=[UINib nibWithNibName:@"MyCell" bundle:nil]; 7 [tableView registerNib:nib forCellReuseIdentifier:cellIdentifier]; 8 nibsRegistered=YES; 9 } 10 MyCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 11 //cell 上的元素初始化代碼 12 13 return cell; 14 }
UINib *nib=[UINib nibWithNibName:@"MyCell" bundle:nil]; [tableView registerNib:nib forCellReuseIdentifier:cellIdentifier];
這兩句代碼是引用我們自己定義的cell的關鍵 首先讀取我們自己定義的cell的nib文件 再在tableView中注冊 此時 我們定義的cell便加入
到了tableView的可重用隊列當中了
MyCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
這句代碼從中取出一個事例 然后初始化 並返回給tableView顯示
方法2:
1 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 2 { 3 static NSString *tableCellIdentifier = @"name"; 4 MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:tableCellIdentifier]; 5 6 if(cell == nil){ 7 NSArray *nib = [[NSBundle mainBundle]loadNibNamed:@"MyCell" owner:self options:nil]; 8 for(id oneObject in nib){ 9 if([oneObject isKindOfClass:[MyCell class]]){ 10 cell = (MyCell *)oneObject; 11 } 12 } 13 } 14 //cell初始化。。。 15 16 return cell; 17 }
2.利用storyboard自定義cell
利用storyboard自定義cell比較簡單 較xib 方法 少了讀取xib文件的一步
在storyboard中拖出一個tableViewController后 拖上去一個cell 然后自己設計cell 最后一定要填上identifier
此時cell已經磨人添加到了tableview的 重用隊列中了
引用的時候只需
1 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 2 { 3 //這個是在storyboard中設置的identifier 4 static NSString *tableCellIdentifier = @"name"; 5 MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:tableCellIdentifier]; 6 //cell初始化 7 return cell; 8 }
純屬自己的一些理解 寫下來方便自己記憶 如有錯誤指出 希望大家討論指正
轉載請著名出處