1

私はWKInterfaceTable単一の行コントローラーを持っています。次のコードを使用して、データをテーブルにバインドしています。

[self.table setNumberOfRows:[data count] withRowType:@"RowController"];
for (int i = 0; i < [data count]; i++)
{
    RowController *row = [self.table rowControllerAtIndex:i];
    [row bind:[data objectAtIndex:i]]; // sets labels in the row etc.
}

を使用して行を 1 つずつ追加すると、同じ問題が発生しinsertRowsAtIndexes:withRowTypes:ます。いずれの場合も、行を更新して正しいデータを表示する前に、まずテーブルに行を追加する必要があります。

最初の問題は、このため、追加される行とそれにバインドされるデータの間にダミーのストーリーボード データが表示されることです。

私はもう試した

  • ループが終了するまでテーブルを含むグループを非表示にしますが、最初のロードの最初のテーブル項目は、完全にバインドされているかのように終了しますnil(そうでなくても) (他の誰かがこれを見ました)
  • グループが終了するまで各行のコンテンツを含むグループを非表示にしますが、スクロールはこれをうまく処理できず、行がうまくポップインされません
  • ループが終了するまで別のグループでテーブルを非表示にしますが、下にスクロールすることはできます

ユーザーに表示する前にテーブル行をレンダリングする方法は本当にありませんか?

4

1 に答える 1

3

同様の問題がありましたが、メインスレッドにジョブをディスパッチすることで解決しました。

dispatch_async(dispatch_get_main_queue(), ^{
    [self.table setNumberOfRows:[data count] withRowType:@"RowController"];
    for (int i = 0; i < [data count]; i++)
    {
        RowController *row = [self.table rowControllerAtIndex:i];
        [row bind:[data objectAtIndex:i]]; // sets labels in the row etc.
    }
});
于 2015-06-01T22:16:12.200 に答える