1

このアップルのチュートリアルに従ってインデックス付きリストを作成しましたが、アイテムの削除に問題があります。一番下のセクションの最後の項目を削除すると、セクション ヘッダーが残ります。これは、最後のセクションでのみ発生します。

ここに画像の説明を入力

アイテムを削除するための私のコードは次のとおりです。

- (void)tableView:(UITableView *)tableView commitEditingStyle: (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{

    if (editingStyle == UITableViewCellEditingStyleDelete) 
    {  
        [[self.littleWords objectAtIndex:indexPath.section]removeObjectAtIndex:indexPath.row];
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }
}

littleWords は、Apple チュートリアルの状態と同じセクションの配列です。

セルを作成するためのコード:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell = [tableView
                             dequeueReusableCellWithIdentifier:@"MyBasicCell"];

    Word * myWord = [[self.littleWords objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];

    cell.textLabel.text = myWord.name;
    cell.detailTextLabel.text = myWord.translation;
    return cell;

}

残りの tableView 関数:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

    return [self.littleWords count];

}



- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return [[self.littleWords objectAtIndex:section] count];

}



- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {

    return [[UILocalizedIndexedCollation currentCollation] sectionIndexTitles];

}



- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {

    if ([[self.littleWords objectAtIndex:section] count] > 0) {


        NSString *str = [[[UILocalizedIndexedCollation currentCollation] sectionTitles] objectAtIndex:section];

        NSLog(@"returning section header: %@", str);
        return str;

    }

    return nil;

}



- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index

{

    return [[UILocalizedIndexedCollation currentCollation] sectionForSectionIndexTitleAtIndex:index];

}
4

1 に答える 1

0

問題はメソッドにありnumberOfSectionsInTableView:ます。特定のセクション内のすべてのアイテムを削除すると、番号が変更されます。できることの例を次に示します。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    NSInteger sections = 0;
    for (NSArray *sectionArray in littleWords) {
        if (sectionArray.count > 0) {
            sections++;
        }
    }
    return sections;
}

編集:[tableView reloadData]行を削除した後、セクションを更新するために、または同様のメソッドを呼び出す必要がある場合があります。

于 2013-08-06T02:38:35.437 に答える