2017-01-10 16 views
-2

私はカスタムセルで通常のテーブルビューを持っていますが、iOS 6.0では完全に動作しますが、アプリをiOS 10にアップグレードした後に散在する問題が発生します。cellForRowAtIndexPath:呼び出されますが、テーブルビューに何も表示されません。

注:iPhone 5では、シミュレータと実際のデバイスの両方でアプリケーションが正常に動作します。すべての端末でiOS 10.2が動作していますが、iPhone 6以降には以下の問題があります。

テーブルビューの中には、前と同じように正常に動作するものがありますが、tableViewの1つが常に正確に1つのセル(cellForRowAtIndexPathが7回呼び出されます)を表示し、cellForRowAtIndexPathが2回呼び出されても、

なぜ、tableviewが結果を表示しない場合にこのメソッドが呼び出されるのでしょうか?

私は何が起こっているのか、どのように修正するのかについて全然迷っています。一日のうちに進歩がありませんでした。私は、クリーニングと異なるビルドを実行しようとし、影響を受けるテーブルビューを正しく動作させることができません。私は次に何を試すべきか分からない?どんな助けでも感謝しています!

ここでいくつかのコードが必要なので、ここではそれほど敏感ではない部分があります。これが2回呼び出される

- (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"]; 
} 

:データソース

- (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; 
} 

、結果はテーブルビューが空であることです。

新しい情報11 Jan 2017 アプリは電話でテストするときに機能しますが、シミュレータでは機能しません。私はまだ何が間違っているのか分かりませんし、私はまだこの質問をするために得ている下降声で本当にdissapointedです。誰かがなぜそれが悪い質問であると思うかを説明できるのであれば、私は感謝します。

明らかにすべてがiPhone 5で動作します。iPhone 6以降では動作しません。 iOSはまだ10.2ですが、iPhone 5とiPhone 6と7の両方ともiOS 10.2

の間で違います特定のサイズでのみ発生するUIバグです。生じ

もう一つの問題は、私のgesturerecognizerも唯一6+

新しい情報をiPhone5の上で動作していないということです!

私はheightForRowAtIndexPathコードにコメントすることで問題を解決できます。これは、特定の細胞の高さを調整するために他の方法が必要であり、それが現在の問題であることを意味します。私はまだuituitviewがこのように振る舞う理由は全く知りません。

+2

データモデルを説明し、すべてのテーブルビューデータソースメソッドを投稿する必要があります。 –

+0

どのようなコードが必要ですか?私は別のプラットフォームで同じコードが動作すると私は言ったように、並外れたことは何もありません。私はちょうどcellForRowが呼び出されたが、何も表示していないと誰も見つけられていない – Ostmeistro

+0

@OstmeistroよくcellForRowコードは良いスタートになるでしょう。また、おそらくデータモデルの説明。または、テーブルビューを作成する方法とデリゲート/データソース – Fogmeister

答えて

1

"heightForRowAtIndexPath"というメソッドがiPhone 5でdouble型を返し、iPhone 6で長すぎるということは正しいことです。 "CGFloat"という定義済みのデータ型を使用する必要があります。

この問題を見つけるのは容易ではなかったし、私はこれを使って他の誰かを助けることができれば幸いだ。助けようとした人にも感謝します!

関連する問題