我创建了一个非常简单的应用程序,我试图在表视图中插入自定义单元格。但是,每当我返回自定义单元格的实例时,屏幕上都不会显示任何内容,其次,应用程序会进入某种奇怪的无限循环。任何帮助将非常感激。我在这个问题上附上了我的代码。
-- view controller which is returning custom cells ---
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Try to recover a cell from the table view with the given identifier, this is for performance
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:@"CustomCell"];
// If no cell is available, create a new one using the given identifier
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle]
loadNibNamed:@"sample_1ViewController" owner:self options:nil];
for (id currentObject in topLevelObjects)
{
if ([currentObject isKindOfClass:[CustomCell class]])
{
cell = currentObject;
break;
}
}
}
// Fill the cell
cell.lbl.text = @"test";
return cell;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 4;
}
--- custom cell class ---
@interface CustomCell : UITableViewCell {
IBOutlet UILabel * lbl;
}
@property (nonatomic, retain) IBOutlet UILabel * lbl;
@end
@implementation CustomCell
@synthesize lbl;
@end
----
自定义单元格是sample_1ViewController.xib文件中的UITableCellView资源。它包含一个UILabel。 CustomCell的标识符也是CustomCell。
请查看您是否可以找到可能出错的内容或告诉我可能遗漏的内容。
此致 尼丁
答案 0 :(得分:3)
sample_1ViewController.nib是否包含viewController类的实例?
每次dequeueResuableCellWithIdentifier:
返回nil时,您的代码似乎重新加载整个nib文件,如果该nib文件包含相同viewController类的实例,那么它将继续尝试无限期地重新加载nib文件
因为您需要做的就是返回一个单元类的实例,如何:
首先,在viewController类中添加一个tableCell
实例变量:
@class CustomCell;
@interface MyViewController
{
CustomCell * tableCell;
}
@end
使用init
方法创建单元格的单个实例:
- (id)initWithNibName:(NSString *)nibNameOrNil
bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self == nil) { return nil; }
tableCell = [[CustomCell alloc] init];
return self;
}
请务必在dealloc
:
- (void)dealloc
{
[tableCell release];
}
现在,您的委托方法变为:
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
tableCell.lbl.text = @"test";
return tableCell;
}
答案 1 :(得分:0)
这也是我的问题。我把单元格的视图放在TableView和
的同一个xib中- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
我致电
[[NSBundle mainBundle] loadNibNamed:CELLE_NIB owner:self options:nil];
谢谢你们!