Custom UITableViewCell opens different xib sub views
I have started to learn xcode and Iphone SDK, I have made a custom UITableviewCell for a tableview that load NSArrays for different values through only one xib(nib) file.
What I want to know is how to make these cells opens different xib(nib) files.
Here is my file.
#import "SimpleTableViewController.h"
#import "NextViewController.h"
#import "TableCellView.h"
@implementation SimpleTableViewController
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
titleList = [[NSArray alloc] initWithObjects:
@"Title 1", @"Title 2", @"Title 3", @"Title 4" , nil];
imagesList = [[NSArray alloc] initWithObjects:
@"Image 1", @"Image 2", @"Image 3",
@"Image 4", nil];
imagesHeader = [[NSArray alloc] initWithObjects:
@"ImagePro 1", @"ImagePro 2",
@"ImagePro 3", @"ImagePro 4", nil];
descpList = [[NSArray alloc] initWithObjects: @"Description 1",
@"Description 2", @"Description 3",
@"Description 4", nil];
self.title = @"Text";
[super viewDidLoad];
}
#pragma mark Table view methods
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [titleList count];
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyIdentifier = @"MyIdentifier";
MyIdentifier = @"tblCellView";
TableCellView *cell = (TableCellView *)[tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if(cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"TableCellView" owner:self options:nil];
cell = tblCell;
}
[cell setLabelText:[titleList objectAtIndex:indexPath.row]];
[cell setProductImage:[imagesList objectAtIndex:indexPath.row]];
[cell setDescpText:[descpList objectAtIndex:indexPath.row]];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NextViewController *nextController = [[NextViewController alloc] initWithNibName:@"NextView" bundle:nil];
[self.nav开发者_StackOverflowigationController pushViewController:nextController animated:YES];
[nextController changeProductText:[titleList objectAtIndex:indexPath.row]];
[nextController changeProductContent:[descpList objectAtIndex:indexPath.row]];
[nextController changeHeaderContent:[imagesHeader objectAtIndex:indexPath.row]];
}
@end
Create the XIB files. (CustomCellOne, CustomCellTwo)
Here's an example of how to alternate the cells:
Change these lines:
MyIdentifier = @"tblCellView";
[[NSBundle mainBundle] loadNibNamed:@"TableCellView" owner:self options:nil];
To these lines:
MyIdentifier = indexPath.row % 2 == 0 ? @"CustomCellOne" : @"CustomCellTwo";
[[NSBundle mainBundle] loadNibNamed:indexPath.row % 2 == 0 ? @"CustomCellOne" : @"CustomCellTwo" owner:self options:nil];
精彩评论