自定義單元格
公司主營業(yè)務(wù):成都做網(wǎng)站、成都網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出勐海免費做網(wǎng)站回饋大家。
當(dāng)蘋果公司提供給的單元格樣式不能我們的業(yè)務(wù)需求的時候,我們需要自定義單元格。在iOS 5之前,自定義單元格可以有兩種實現(xiàn)方式:代碼實現(xiàn)和用xib技術(shù)實現(xiàn)。用xib技術(shù)實現(xiàn)相對比較簡單,創(chuàng)建一個xib文件,然后定義一個繼承 UITableViewCell類單元格類即可。在iOS 5之后我們又有了新的選擇,故事板實現(xiàn)方式,這種方式比xib方式更簡單一些。
我們把簡單表視圖案例的原型圖修改一下,這種情況下四種內(nèi)置的單元格樣式就不合適了。
采用“Single View Application”工程模版創(chuàng)建一個名為“CustomCell”的工程,Table View屬性的“Prototype Cells”項目設(shè)為1(除此之外其它的操作過程與上同)。
設(shè)計畫面中上部會有一個單元格設(shè)計畫面,我們可以在這個位置進行單元格布局的設(shè)計。從對象庫拖拽一個Label和Image View到單元格設(shè)計畫面,調(diào)整好它們的位置。
創(chuàng)建自定義單元格類CustomCell, 選擇UITableViewCell為父類
再 回到IB設(shè)計畫面,在IB中左邊選擇“Table View Controller Scene” → “Table View Controller” → “Table View” → “Table View Cell”,打開單元格的標(biāo)識檢查器,在Class的選項中選擇CustomCell類。
為Lable和ImageView控件連接輸出口
本案例的代碼如下:
- //
- // CustomCell.h
- // CustomCell
- #import
- @interface CustomCell : UITableViewCell
- @property (weak, nonatomic) IBOutlet UILabel *name;
- @property (weak, nonatomic) IBOutlet UIImageView *p_w_picpath;
- @end
- //
- // CustomCell.m
- // CustomCell
- #import “CustomCell.h”
- @implementation CustomCell
- @end
CustomCell類的代碼比較簡單,在有些業(yè)務(wù)中還需要定義動作。
修改視圖控制器ViewController.m中的tableView: cellForRowAtIndexPath:方法,代碼如下:
- - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- static NSString *CellIdentifier = @”Cell”;
- CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
- if (cell == nil) {
- cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
- }
- NSUInteger row = [indexPath row];
- NSDictionary *rowDict = [self.listTeams objectAtIndex:row];
- cell.name.text = [rowDict objectForKey:@"name"];
- cell.p_w_picpath.p_w_picpath = [UIImage p_w_picpathNamed:[rowDict objectForKey:@"p_w_picpath"]];
- NSUInteger row = [indexPath row];
- NSDictionary *rowDict = [self.listFilterTeams objectAtIndex:row];
- cell.textLabel.text = [rowDict objectForKey:@"name"];
- NSString *p_w_picpathPath = [rowDict objectForKey:@"p_w_picpath"];
- p_w_picpathPath = [p_w_picpathPath stringByAppendingString:@".png"];
- cell.p_w_picpath.p_w_picpath = [UIImage p_w_picpathNamed:p_w_picpathPath];
- cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
- return cell;
- }
我們看到if (cell == nil){}代碼被移除,這是因為我們在IB中已經(jīng)將重用標(biāo)識設(shè)定為Cell了。 方法中的其它代碼與簡單表一致,此處不再贅述。運行一下。