自定义 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 类型
两个 UIViewController 的不同 UITableView 中的一个自定义 UITableViewCell