2017-01-10 71 views
-2

我有一个普通的桌面视图与自定义单元格,在iOS 6.0完美工作,但升级到iOS 10后,分散的问题出现。cellForRowAtIndexPath:被调用,但没有显示在tableview

注意:该应用程序可以在iPhone 5上正常工作,无论是在模拟器上还是在真实设备上。所有设备都运行iOS 10.2,但iPhone 6及以上版本具有下述问题。

一些tableviews像以前一样工作正常,而其中一个tableView总是显示1个单元格(即使艰难的cellForRowAtIndexPath被称为7次),另一个表格尽管cellForRowAtIndexPath被调用了两次,但根本不显示任何单元格。

我想知道为什么如果tableview不关心显示结果调用该方法?

我完全丧失了正在发生的事情以及如何解决这个问题。一直没有进展的一天。我已经尝试清理并运行不同的构建,无法让受影响的表访问行为正确。我不知道接下来要尝试什么?任何帮助表示赞赏,谢谢!

好,因为你需要一些代码,这是它的一部分,不是那么敏感。数据源:

- (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错误。

一说出现另一个问题是,我也gesturerecognizer只适用于iPhone5的,而不是6+

新的信息!

我可以通过评论heightForRowAtIndexPath代码来解决问题。这现在意味着我需要其他方式来调整某些单元的高度,这是当前的问题。我仍然不知道为什么uitableview这样表现。

+2

您需要解释您的数据模型并发布所有表视图数据源方法。 –

+0

你需要什么代码?我没有什么特别的事情发生,正如我所说的,相同的代码在另一个平台上工作。我刚刚没有发现有人说过cellForRow已被调用,但没有显示任何东西 – Ostmeistro

+0

@Ostmeistro以及您的cellForRow代码将是一个好的开始。另外,可能是对数据模型的解释。或者,也许你如何创建tableview,它的委托/ datasoruce – Fogmeister

回答

1

此问题的原因是“heightForRowAtIndexPath”方法在iPhone 5上返回一个双精度值并且在iPhone 6上长精确,应该使用一个名为“CGFloat”的已定义数据类型!

找到这个问题并不容易,我希望我可以帮助其他人。也感谢任何人试图帮助!

相关问题