将文本设置为自定义表格单元格标签时崩溃

Posted

技术标签:

【中文标题】将文本设置为自定义表格单元格标签时崩溃【英文标题】:Crash when setting text to a custom table cell label 【发布时间】:2011-04-21 07:15:42 【问题描述】:

当我想设置属于表格单元格的标签文本时,我的应用程序崩溃了。我的代码sn-p如下:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

if (cell == nil) 

    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:simpleTableIdentifier];
    [cell autorelease];

    CGRect splitMethodLabelRect = CGRectMake(160, 6, 50, 30); 
    UILabel *splitMethodLabel = [[UILabel alloc] initWithFrame:splitMethodLabelRect]; 
    splitMethodLabel.textAlignment = UITextAlignmentLeft; 
    splitMethodLabel.font = [UIFont systemFontOfSize:13]; 
    splitMethodLabel.tag = kSplitMethodTag;
    [cell.contentView addSubview: splitMethodLabel]; 
    [splitMethodLabel release];



UILabel *splitMethodName = (UILabel *)[cell.contentView viewWithTag:kSplitMethodTag]; 

//app crashes at this point
splitMethodName.text = @"Test"; 

问题似乎出在我设置文本的时候。 下面的堆栈跟踪:

2011-04-21 15:11:10.820 BillSplitter[3021:707] -[UITableViewCellContentView setText:]: unrecognized selector sent to instance 0x18a680
2011-04-21 15:11:10.829 BillSplitter[3021:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewCellContentView setText:]: unrecognized selector sent to instance 0x18a680'

非常感谢您对此提出任何建议!

【问题讨论】:

发布堆栈跟踪总是一个好主意:) @Zhen: 把tag的值改成别的,看看是不是还是崩溃。 @Simon,是的,你是对的。我将 0 分配给导致应用程序崩溃的标签值。我将值更改为 1,它现在工作正常。非常感谢您的帮助! @Simon +1 供您发表评论,您应该将其作为答案发布,以便其他人在将来找到它。 【参考方案1】:

看来您设置为 splitMethodLabeltag 值可能会导致问题。Just change the tag value to something else and check if it crashes still.

【讨论】:

【参考方案2】:

啊,问题是:您将自己的标签作为子视图添加到单元格中,但是没有给出引用 splitMethodName 的属性。标签位于单元格的视图层次结构中,但您没有访问它的引用。

您可以通过继承 UITableViewCell 并将标签添加为属性来解决此问题。然后使用您的自定义类。覆盖 initWithStyle,将参数传递给 super,然后创建标签,添加为子视图并分配给您的属性。

【讨论】:

以上是关于将文本设置为自定义表格单元格标签时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

在 tableView(:didSelectRowAt) 中为自定义表格单元格 UILabel 设置值

如何固定表格视图中自定义单元格文本字段的标签值?

无法在 Bundle 中为自定义表格视图单元格类加载 NIB

为啥自定义表格单元格总是默认大小

文本字段标签和表格视图

根据 JSON 文件中的内容文本调整带有 UILabel 的自定义单元格的大小