我已经在Interface Builder中创建了自定义单元格,并为它创建了一个自定义的UITableViewCell类,但是当它加载时没有对它进行任何更改。我在自定义类中有这个代码:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self)
{
// Initialization code
//Get the wedding date and display it
myLabel.text = @"Hello";
}
return self;
}
myLabel已在标题中声明,有一个属性并已在“界面”构建器中链接,但是当我运行应用程序并查看我的表时,我没有得到“Hello”文本。有什么想法吗?
感谢。
编辑:
我没有使用nib文件,我在故事板中的UITableViewController中使用它。另外,下面是cellForRowAtIndexPath代码,我只需要一个填充了所需单元格标识符的数组,然后创建所述数组:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier;
for (int cell = 0; cell <= [tableCellsArray count]; cell++)
{
if ([indexPath row] == cell)
{
CellIdentifier = [tableCellsArray objectAtIndex:cell];
}
}
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// Configure the cell...
return cell;
}
答案 0 :(得分:0)
浏览Apple documentation,其中介绍了如何自定义UITableViewCell。
在上面的页面中,pl。请参阅清单5-5 Loading a cell from a nib file and assigning it content
,其中明确说明了使用nib文件自定义单元格。
答案 1 :(得分:0)
你如何创建你的细胞?你是从Nib加载它还是分配它? 如果您分配它,则需要正确初始化实例(例如myLabel)。 如果你从笔尖加载单元格,我担心
- (id)initWithCoder:(NSCoder *)aDecoder
是您要覆盖的init方法。
无论如何,你可以放一个断点来确保你通过那里并打印myLabel以确保它被正确初始化。
- 编辑
如果您想使用nib定制单元格视图,则无法使用initWithStyle初始化单元格视图:reuseIdentifier:method。
使用initWithStyle:reuseIdentifier:表示您将通过自己的实现初始化所有视图(例如,您将分配,初始化和配置所有视图,它不会使用xib文件)
如果要使用xib文件,则需要在NSBundle中使用loadNibNamed:owner:options:方法。
通常,我见过两种实现:
[[NSBundle mainBundle] loadNibNamed:@“”owner:self options:nil];
在此实现中,您加载xib,将UIViewController子类作为所有者。在xib中,确保File Owner类是您的UIViewController子类。然后只需将单元格与UIViewController子类的属性链接并调用loadNibNamed:owner:options:将只分配并初始化一个新的单元格视图,该视图将在UIViewController子类的属性中可用。这就是Apple文档建议您做的事情。
NSArray * nibObjects = [[NSBundle mainBundle] loadNibNamed:@“”owner:nil options:nil]; UITableViewCell myCustomCell = [nibObjects objectAtIndex:0];
在此实现中,您不会将任何所有者传递给xib文件并获取所需的对象。只需确保您的xib文件只有一个对象,即单元格视图。我更喜欢这种方法,因为我觉得拥有一个创建单元格的属性是“奇怪的”,但你需要确保你的xib文件的内容将你的自定义单元格视图保持在0索引。
无论选择哪种方法,请记住加载xib会调用
的initWithCoder: 代替 initWithStyle:reuseIdentifier:
最后,我建议你去看看Aadhira的Apple文档链接,该文档解释了如何将自定义UITableCellView与xib文件一起使用。