對自定義UITableViewCell的理解


自定義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 }

 

 

純屬自己的一些理解  寫下來方便自己記憶   如有錯誤指出 希望大家討論指正

轉載請著名出處

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM