0

HTMLからデータをフェッチするUITableViewがあります。フェッチは正常に機能しており、通常、1、2、3、4、5 から 20 まで、約 20 個のセルを表示します。

ただし、フェッチ後、セルはすべてのセルの最初のセルのコンテンツのみを表示します。(つまり、1, 1, 1, 1, 1, 1) 下にスクロールすると、6, 7, 8, ... , 20 が表示されます。もう一度上にスクロールすると、表が次のようになります。正常...

コードをテストしていたところ、insertNewObject クラスで 0 インデックスに挿入すると、すべてが正常になることがわかりました。ただし、オブジェクトを追加したり、最後のインデックスにオブジェクトを挿入したりするだけでは機能しません。

insertNewObject クラスのコードは次のとおりです。

- (void)insertNewObject:(id)sender {
    if (!_objects) {
        _objects = [[NSMutableArray alloc] init];
    }

// Working code, but I want the order from the top 1, 2, 3, ..., 20 rather than 
// 20, 19, 18, ..., 2, 1
// [_objects insertObject:sender atIndex:0];

// And the code below doesn't show up correctly...
//    [_objects insertObject:sender atIndex:(_objects.count)];
//    [_objects addObject:sender];

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
    [self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}

非常に奇妙です。これは描画に関係していると思います。なぜなら、UITableView は、上下にスクロールし続けてディスプレイを「きれいにする」と、すべてが正常に表示されるためです...しかし、setDisplay を実行しても、何も起こりませんでした... テーブルを更新していますどちらも問題を解決しません...

何か案が?ありがとう

4

1 に答える 1

0

あなたの質問には、確かに知るのに十分なコンテキストがありませんが、おそらくここであまりにも多くのことをしようとしていると思います. NSMutableArrayメソッドを使用してaddObject:、新しいオブジェクトをデータ配列の末尾に追加できます。それを行った後、呼び出すだけreloadDataで、tableView はそれ自体を再描画して、新しいデータ項目のセルを含めます。

- (void)insertNewObject:(id)sender
{
    if (!_objects) {
        _objects = [[NSMutableArray alloc] init];
    } 
    [_objects addObject:sender];
    [self.tableView reloadData];
}
于 2012-08-16T03:41:38.330 に答える