自定义UITableViewCell打开不同的xib子视图

时间:2010-11-12 13:42:37

标签: iphone uitableview xib subviews

我已经开始学习xcode和Iphone SDK,我为一个tableview创建了一个自定义的UITableviewCell,它只通过一个xib(nib)文件为不同的值加载NSArrays。

我想知道的是如何让这些单元格打开不同的xib(nib)文件。

这是我的档案。

#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.navigationController pushViewController:nextController animated:YES];
    [nextController changeProductText:[titleList objectAtIndex:indexPath.row]];
    [nextController changeProductContent:[descpList objectAtIndex:indexPath.row]];
    [nextController changeHeaderContent:[imagesHeader objectAtIndex:indexPath.row]]; 
}

@end

1 个答案:

答案 0 :(得分:1)

创建XIB文件。 (CustomCellOne,CustomCellTwo)

以下是如何交替细胞的示例:

更改这些行:

MyIdentifier = @"tblCellView";

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

到这些方面:

MyIdentifier = indexPath.row % 2 == 0 ? @"CustomCellOne" : @"CustomCellTwo";

[[NSBundle mainBundle] loadNibNamed:indexPath.row % 2 == 0 ? @"CustomCellOne" : @"CustomCellTwo" owner:self options:nil];