我有这个非常奇怪的错误。当我向下滚动表格视图,直到我称之为“描述”的部分时,将不会显示此部分中的单元格。相反,该部分的标题一再重复。听起来无论谁负责iPhone中的屏幕显示,都没有找到任何可以显示的内容,而且之前屏幕上显示的内容(由于我向下滚动,它是该部分的标题)。
如果我截取屏幕截图,则只有黑色背景而不是单元格。
这个错误在模拟器中没有发生,只在真实设备中发生。
有没有人见过这种事?你能猜出问题出在哪里吗?
答案 0 :(得分:0)
尝试将单词描述更改为其他内容。 Objective C类使用单词description来表示一个对象可以用NSString描述自己的方法。如果更改名称会修复它,那么您的错误就与此有关。
你可以在工作中看到如下描述:
NSString *aString = [[NSString alloc] initWithFormat:@"hi"];
NSLog(@"%@", [aString description]);
答案 1 :(得分:0)
感谢您的回复,我将把代码放在这里。但请记住,我的代码适用于所有其他单元格,因此它必须与此单元格的特定内容相关,但它只是UILabel中的一些文本...
请不要犹豫,查看我制作的视频,这对iPhone来说是一种非常好奇的行为,你有没有看到过? dl.free.fr/rlQmFyWS0
以下是cellForRowAtIndexPath:方法的代码,只是描述单元关注的部分:
case 3: // A big cell containing the description
{
// Try to find an already allocated cell with the description (note : there is only one description cell per table so no need to check the content...)
UITableViewCell * descriptionCell = [tableView dequeueReusableCellWithIdentifier:kTextCellIdentifier];
if (descriptionCell == nil) {
// As a frame, use the description label's one plus a little margin for the height
descriptionCell = [[[UITableViewCell alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, self.descriptionText.frame.size.height + (2*kCellInset)) reuseIdentifier:kTextCellIdentifier] autorelease];
descriptionCell.selectionStyle = UITableViewCellSelectionStyleNone;
// The descriptionText UILabel has been previously initialized properly by tableview:heightForRowAtIndexpath: method
[descriptionCell.contentView addSubview:self.descriptionText];
}
return descriptionCell;
这是我初始化descriptionText字段的部分:
// Customize row height for each cell
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section == 3) {
CGSize realSize;
if (self.descriptionText != nil) {
// the description has been previously initialized
realSize = descriptionText.frame.size;
}
else {
// We need to dynamically resolve the height for the description zone
NSString * desc = (NSString *)[product objectForKey:@"description"];
UILabel * descLabel = [[UILabel alloc] initWithFrame:CGRectZero];
// Unlimited number of lines
descLabel.numberOfLines = 0;
descLabel.text = desc;
// Set a preferred width and anything for the height
realSize = [descLabel sizeThatFits:CGSizeMake(tableView.frame.size.width - (2*kCellInset), 1)];
// Take the opportunity to set the frame with the correct values
descLabel.frame = CGRectMake(kCellInset, kCellInset, realSize.width, realSize.height);
self.descriptionText = descLabel;
[descLabel release];
}
return (realSize.height + (2*kCellInset));
}
else {
return kImageCellHeight;
}
return 0;
}
任何猜测都会受到欢迎......我一直在这里进行调查
答案 2 :(得分:0)
我找到了解决方案......很明显但仍然......
我的UILabel的大小超过2048像素。我们不允许使用比这更大的尺寸,这就是渲染是如此奇怪的原因。
此主题stackoverflow.com/questions/773386/inserting-various-views-into-uiscrollview已经处理过该问题。