2017-01-10 72 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」的已定義數據類型!

找到這個問題並不容易,我希望我可以幫助其他人。也感謝任何人試圖幫助!

相關問題