生活随笔
收集整理的這篇文章主要介紹了
iOS开发那些事--自定义单元格实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
自定義單元格
當蘋果公司提供給的單元格樣式不能我們的業務需求的時候,我們需要自定義單元格。在iOS 5之前,自定義單元格可以有兩種實現方式:代碼實現和用xib技術實現。用xib技術實現相對比較簡單,創建一個xib文件,然后定義一個繼承 UITableViewCell類單元格類即可。在iOS 5之后我們又有了新的選擇,故事板實現方式,這種方式比xib方式更簡單一些。
?
我們把簡單表視圖案例的原型圖修改一下,這種情況下四種內置的單元格樣式就不合適了。
?
??? 采用“Single View Application”工程模版創建一個名為“CustomCell”的工程,Table View屬性的“Prototype Cells”項目設為1(除此之外其它的操作過程與上同)。
?
設計畫面中上部會有一個單元格設計畫面,我們可以在這個位置進行單元格布局的設計。從對象庫拖拽一個Label和Image View到單元格設計畫面,調整好它們的位置。
?
創建自定義單元格類CustomCell, 選擇UITableViewCell為父類
?
再 回到IB設計畫面,在IB中左邊選擇“Table View Controller Scene” → “Table View Controller” → “Table View” → “Table View Cell”,打開單元格的標識檢查器,在Class的選項中選擇CustomCell類。
?
為Lable和ImageView控件連接輸出口
?
本案例的代碼如下:
?
??????#import?<UIKit/UIKit.h>??@interface?CustomCell?:?UITableViewCell??@property?(weak,?nonatomic)?IBOutlet?UILabel?*name;??@property?(weak,?nonatomic)?IBOutlet?UIImageView?*image;??@end????????#import?“CustomCell.h”??@implementation?CustomCell??@end? CustomCell類的代碼比較簡單,在有些業務中還需要定義動作。
修改視圖控制器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.image.image?=?[UIImage?imageNamed:[rowDict?objectForKey:@"image"]];??NSUInteger?row?=?[indexPath?row];??NSDictionary?*rowDict?=?[self.listFilterTeams?objectAtIndex:row];??cell.textLabel.text?=??[rowDict?objectForKey:@"name"];??NSString?*imagePath?=?[rowDict?objectForKey:@"image"];??imagePath?=?[imagePath?stringByAppendingString:@".png"];??cell.image.image?=?[UIImage?imageNamed:imagePath];??cell.accessoryType?=?UITableViewCellAccessoryDisclosureIndicator;??return?cell;??}? 我們看到if (cell == nil){}代碼被移除,這是因為我們在IB中已經將重用標識設定為Cell了。 方法中的其它代碼與簡單表一致,此處不再贅述。運行一下。
總結
以上是生活随笔為你收集整理的iOS开发那些事--自定义单元格实现的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。