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

Posted

技术标签:

【中文标题】自定义 UITableViewCell 打开不同的 xib 子视图【英文标题】:Custom UITableViewCell opens different xib sub views 【发布时间】:2010-11-12 13:42:37 【问题描述】:

我已经开始学习 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】:

创建 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];

【讨论】:

嗨,布兰登,感谢您的帮助!虽然它不工作!这是我尝试工作的示例! bit.ly/18k2xy 如果你能看看...再次感谢

以上是关于自定义 UITableViewCell 打开不同的 xib 子视图的主要内容,如果未能解决你的问题,请参考以下文章

改变自定义uitableviewcell内容在不同方向的位置

如何配置 cellForRowAtIndexPath 以处理两种不同的自定义 UITableViewCell 类型

自定义UITableViewCell

两个 UIViewController 的不同 UITableView 中的一个自定义 UITableViewCell

UITableViewCell 为不同的方向和单元格类型加载自定义 XIB

UIImageView 在具有不同高度的自定义 UITableViewCell 内自动调整大小