当我想设置属于表格单元格的标签文本时,我的应用程序崩溃了。我的代码段如下:
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";
问题似乎就在我设置文本时。 Stacktrace如下:
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'
非常感谢任何有关此事的建议!
振
答案 0 :(得分:6)
您设置为 splitMethodLabel 的标记值似乎可能导致问题。
Just change the tag value to something else and check if it crashes still.
答案 1 :(得分:2)
问题是:您是将自己的标签作为子视图添加到单元格中,但是没有给出引用splitMethodName的属性。标签位于单元格的视图层次结构中,但您没有访问它的引用。
您可以通过继承UITableViewCell并将标签添加为属性来解决此问题。然后使用您的自定义类。覆盖initWithStyle,将参数传递给super,然后创建标签,添加为子视图并分配给您的属性。