iOS開發那些事–自訂儲存格實現

來源:互聯網
上載者:User

自訂儲存格

當蘋果公司提供給的儲存格樣式不能我們的業務需求的時候,我們需要自訂儲存格。在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控制項串連輸出口

 

本案例的代碼如下:

////  CustomCell.h//  CustomCell#import <UIKit/UIKit.h>@interface CustomCell : UITableViewCell@property (weak, nonatomic) IBOutlet UILabel *name;@property (weak, nonatomic) IBOutlet UIImageView *image;@end////  CustomCell.m//  CustomCell#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了。 方法中的其它代碼與簡單表一致,此處不再贅述。運行一下。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.