我有一个带有自定义单元格的普通tableview,在iOS 6.0上完美运行但是在将应用程序升级到iOS 10后,出现了分散的问题。
注意:该应用程序在iPhone 5上按预期工作,无论是在模拟器上还是在真实设备上。所有设备都运行iOS 10.2,但iPhone 6及更高版本具有下述问题。
一些tableviews就像以前一样工作正常,而其中一个tableViews总是显示1个单元格(即使是艰难的cellForRowAtIndexPath被调用7次),另一个表格显示没有单元格,尽管cellForRowAtIndexPath
被调用两次。
我想知道为什么如果tableview不关心显示结果会调用该方法?
我完全不知道发生了什么以及如何解决它。已经有一天没有任何进展了。我尝试过清理和运行不同的版本,但无法使受影响的tableviews正常运行。我不知道下一步该尝试什么?感谢任何帮助,谢谢!
好的,因为你需要一些代码,这是它的一部分并不敏感。数据源:
- (void)viewDidLoad
{
[super viewDidLoad];
NOSUserInfo2 *userInfo = [S24SharedUserHandler currentUser];
dataSource = [NSMutableArray arrayWithArray:[userInfo children]];
if([userInfo student] || [userInfo teacher])
{
[dataSource insertObject:userInfo atIndex:0];
}
self.contentSizeForViewInPopover = CGSizeMake(250, 45*dataSource.count-1);
self.tableView.backgroundColor=[UIColor colorWithWhite:0.95f alpha:1];
self.tableView.scrollEnabled=NO;
[self.tableView registerNib:[UINib nibWithNibName:@"NOSPersonSelectorCell" bundle:nil] forCellReuseIdentifier:@"PersonPopoverCell"];
}
这被调用2次:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"PersonPopoverCell";
NOSPersonSelectorCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.selectionStyle=UITableViewCellSelectionStyleNone;
cell.textLabel.font = [UIFont fontWithName:@"HelveticaNeue-Medium" size:15];
cell.textLabel.backgroundColor=[UIColor clearColor];
NSObject *dataObject = [dataSource objectAtIndex:[indexPath row]];
if ([dataObject isKindOfClass:[NOSUserInfo2 class]]) {
cell.textLabel.text = [(NOSUserInfo2 *)dataObject name];
cell.pk = [(NOSUserInfo2 *)dataObject personPK];
}
else {
cell.textLabel.text = [(NOSChild2 *)dataObject childName];
cell.pk = [(NOSChild2 *)dataObject childPK];
}
cell.textLabel.textColor = [UIColor colorWithWhite:0.18f alpha:1];
//NSLog(@"%d", [S24SharedUserHandler selectedPk]);
cell.checkmark.hidden=cell.pk!=[S24SharedUserHandler selectedPk];
return cell;
}
结果是tableview为空。
2017年1月11日新信息 该应用程序适用于手机测试,但不适用于模拟器。我仍然不知道出了什么问题,而且我仍然对这个问题感到失望。如果有人能解释为什么他们认为这是一个糟糕的问题,我将不胜感激。
显然一切都适用于iPhone 5.它无法在iPhone 6及更高版本上运行。请注意,iOS仍然是10.2,因为iPhone 5和iPhone 6以及7都有iOS 10.2
由于工作和不工作之间的唯一区别是设备,而不是ios版本,我现在倾向于它是仅在某些尺寸下发生的UI错误。
出现的另一个问题是我的手势识别器也只适用于iPhone5而不是6 +
新信息!
我可以通过评论heightForRowAtIndexPath
代码来解决问题。现在这意味着我需要一些其他方法来调整某些单元格的高度,这是当前的问题。我仍然不知道为什么uitableview会这样做。
答案 0 :(得分:1)
这个特殊问题的原因是方法“heightForRowAtIndexPath”在iPhone 5上返回一个double,在iPhone 6上返回long,为了正确,应该使用一个名为“CGFloat”的已定义数据类型!
找到这个问题并不容易,我希望我可以帮助其他人。也感谢任何试图提供帮助的人!