當前位置:編程學習大全網 - 編程語言 - 如何iOS 編程中使用自定義 TableViewCell

如何iOS 編程中使用自定義 TableViewCell

UITableViewCell類能夠顯示出各種各樣的風格,但有時候我們需要適應不同的顯示模式下的顯示。今天的文章中,我們將使用table view去顯示壹系列自定義的cell。

啟動Xcode,選擇"Create a new Xcode project",然後選擇空應用程序模板,點擊Next。命名為 CustomCells,然後照下圖那樣設置。

點擊Next,選擇項目的存放路徑,最後點擊Create。

這裏需要添加兩個文件,UITableViewController以及custom cell對應的xib文件。

Choose File | New > File ,然後添加壹個名為 TableViewController 的UITableViewController。

如圖:

對於這個controller,我們並不需要xib文件,所以直接點擊Next創建。

重新創建文件,這次我們是創建壹個空的 xib 文件,如下圖:

點擊Next,確保Device Family被設置為iPad,再點擊Next,在默認路徑下保存為 CellNib 文件。

接著打開 CellNib.xib 文件。在上面拖放幾個 label:

這裏第壹個Label的字體大小是27,字體是System Italic。而其他的Label全部都是默認設置。

下壹步就是為文本依然是"Label"的Label設置tag。

將第壹個大字體的Label設置tag=1,然後設置Address1,Address2,Phone,Cell右邊的Label的tag分別為2,3,4,5。

接著需要修改xib的File's Owner的所屬類。這裏選擇為 TableViewController。

打開 TableViewController.h 然後添加這些屬性:

#import <uikit uikit.h=""><span class="referer">@interface</span> TableViewController : UITableViewController

@property (nonatomic, strong) NSArray *cellContent;

@property (nonatomic, strong) IBOutlet UITableViewCell *customCell;<span class="referer">@end</span> </uikit>

這個演示中,我們定義壹個數組來記錄所有cell的內容,還需要如下圖那樣,設置設置好 customCell的outlet。

現在打開TableViewController.m做出如下更改:

#import "TableViewController.h"<span class="referer">@interface</span> TableViewController ()<span class="referer">@end</span>

@implementation TableViewController

@synthesize cellContent, customCell;

- (NSArray *)cellContent

{

cellContent = [[NSArray alloc] initWithObjects:

[NSArray arrayWithObjects:@"Alex Ander",

@"213 4th St.", @"Apt. 17", @"555-555-5555", @"111-111-1111", nil],

[NSArray arrayWithObjects:@"Jane Doe",

@"4 Any Ave.", @"Suite 2", @"123-456-7890", @"098-765-4321", nil],

[NSArray arrayWithObjects:@"Bill Smith",

@"63 Smith Dr.", @"", @"678-765-1236", @"987-234-4987", nil],

[NSArray arrayWithObjects:@"Mike Taylor",

@"3145 Happy Ct.", @"", @"654-321-9871", @"654-385-1594", nil],

[NSArray arrayWithObjects:@"Nancy Young",

@"98 W. 98th St.", @"Apt. 3", @"951-753-9871", @"951-654-3557", nil],

nil];

return cellContent;

}

- (id)initWithStyle:(UITableViewStyle)style

{

self = [super initWithStyle:style];

if (self) {

// Custom initialization

}

return self;

}

- (void)viewDidLoad

{

[super viewDidLoad];

// Uncomment the following line to preserve selection between presentations.

// self.clearsSelectionOnViewWillAppear = NO;

// Uncomment the following line to display an Edit button in the navigation bar for this view controller.

// self.navigationItem.rightBarButtonItem = self.editButtonItem;

}

- (void)viewDidUnload

{

[super viewDidUnload];

// Release any retained subviews of the main view.

// e.g. self.myOutlet = nil;

}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

return YES;

}

#pragma mark – Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

// Return the number of sections.

return 1;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

// Return the number of rows in the section.

return [[self.cellContent objectAtIndex:0] count];

}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

return 149.0f;

}

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

{

cell.backgroundColor = [UIColor colorWithRed:1 green:1 blue:.75 alpha:1];

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {

[[NSBundle mainBundle] loadNibNamed:@"CellNib" owner:self options:nil];

cell = self.customCell;

self.customCell = nil;

}

// Configure the cell…

UILabel *textTarget;

textTarget = (UILabel *)[cell viewWithTag:1]; //name

textTarget.text = [[self.cellContent objectAtIndex:indexPath.row] objectAtIndex:0];

textTarget = (UILabel *)[cell viewWithTag:2]; //addr1

textTarget.text = [[self.cellContent objectAtIndex:indexPath.row] objectAtIndex:1];

textTarget = (UILabel *)[cell viewWithTag:3]; //addr2

textTarget.text = [[self.cellContent objectAtIndex:indexPath.row] objectAtIndex:2];

textTarget = (UILabel *)[cell viewWithTag:4]; //phone

textTarget.text = [[self.cellContent objectAtIndex:indexPath.row] objectAtIndex:3];

textTarget = (UILabel *)[cell viewWithTag:5]; //cellPhone

textTarget.text = [[self.cellContent objectAtIndex:indexPath.row] objectAtIndex:4];

return cell;

}

#pragma mark – Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

// Navigation logic may go here. Create and push another view controller.

/*

<#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil];

// …

// Pass the selected object to the new view controller.

[self.navigationController pushViewController:detailViewController animated:YES];

*/

}<span class="referer">@end</span>#import <uikit uikit.h="">

#import "TableViewController.h"<span class="referer">@interface</span> AppDelegate : UIResponder <uiapplicationdelegate> @property (strong, nonatomic) UIWindow *window;

@property (strong, nonatomic) TableViewController *tableViewController;

@property (strong, nonatomic) UINavigationController *navController;<span class="referer">@end</span> </uiapplicationdelegate></uikit>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

// Override point for customization after application launch.

self.tableViewController = [[TableViewController alloc] initWithStyle:UITableViewStylePlain];

self.tableViewController.title = @"Table View";

self.navController = [[UINavigationController alloc]

initWithRootViewController:self.tableViewController];

[self.window addSubview:self.navController.view];

[self.window makeKeyAndVisible];

return YES;

OK,現在運行程序,特別註意壹下tableViewController的默認cell已經被我們的自定義 cell 替代。

  • 上一篇:江蘇省常熟東南經濟開發區工作人員招聘啟事
  • 下一篇:學iOS開發遊戲需要做哪些準備?
  • copyright 2024編程學習大全網