开发者

Custom UITableViewCell opens different xib sub views

开发者 https://www.devze.com 2023-01-24 14:18 出处:网络
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.

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];
0

精彩评论

暂无评论...
验证码 换一张
取 消