2

別のビューから情報が挿入された後に更新する必要がある tableView があります。私が実行する場合

[self.tableView reloadData];

次に別のビューにさらに情報を挿入してテーブルをリロードしようとすると、現在表示されているすべての行が複製されます。

つまり、アプリを起動すると、次のようになります。

tableView:
    Row 1
    Row 2

次に、テーブルにも表示される情報を送信すると、突然次のようになります。

tableView
    Row 1
    Row 2
    Row 3 <- info I just added
    Row 1
    Row 2

私の numberOfRowsInSection 実装は次のようになります。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [ItemsController sharedItemsController].count;
}

私の cellForRowAtIndexPath 実装は次のようになります。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    ItemsController* controller = [ItemsController sharedItemsController];
    NSMutableArray* recentItems = controller.listOfRecentItems;

    CustomCell *cell = nil;
    NSUInteger row = [indexPath row];

    if( row < recentItems.count )
    {
        Items*  item = [recentItems objectAtIndex:row];
        if( recentCellData == nil )
            recentCellData = [[NSMutableDictionary alloc] initWithCapacity:[indexPath length]];

        if( [recentCellData count] > 0 )
            cell = [recentCellData objectForKey:[NSString stringWithFormat:@"%d", row]];
        if (cell == nil) {
            UIViewController * view1 = [[UIViewController alloc] initWithNibName:@"CustomCell" bundle:nil];

            cell = (CustomCell*)[view1 view];

            [recentCellData setObject:cell forKey:[NSString stringWithFormat:@"%d",row]];
        }

       // do some other stuff here
    }
    // Set up the cell
    return cell;
}

テーブルを更新し、現在表示されている行の重複を避けるための最良の方法は何ですか? すべての助けを前もって感謝します!

4

3 に答える 3

3

エラーは、テーブルをリロードする方法ではなく、テーブルにデータを提供する方法にあります。データ ソース メソッドと新しい行を追加するメソッドにブレークポイントを設定して、どこが間違っているかを確認します。

于 2009-03-26T15:18:37.867 に答える
1

上記にもう少し情報を追加しました。

于 2009-03-26T15:52:09.937 に答える