再利用可能なセルでテーブルビューを使用します。各セルには、テキストを含むtextFieldがあり、これを変更できます。テキストが空の場合、そのセルを削除します。
100行あり、行番号1を変更するとします。それをタップし、空の文字列@ ""を指定し、位置番号50まで下にスクロールして、このセルをタップします。
これから、別のセルでタップジェスチャを検出し、メソッドtextFieldDidEndEditingを呼び出します。このセルをテーブルビューから削除する必要があるかどうかを確認します。cellForRowAtIndexPath:を使用して、変更されたセルを取得します。
問題は、textFieldが空のセルが他に表示されることです。変更したセルを削除しますが、1つだけです。これは再利用可能なセルの問題だと思います。
誰かがこの問題で私を助けることができますか?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *ImageIdentyfier = @"StandardCellWithImageIdentifier";
StandardCellWithImage *cellImage = (StandardCellWithImage *)[tableView dequeueReusableCellWithIdentifier:ImageIdentyfier];
if(cellImage == nil) {
cellImage = [[StandardCellWithImage alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ImageIdentyfier];
}
cellImage.nameLabel.delegate = self;
Item *item = [self.mutableFetchResults objectAtIndex:indexPath.row];
cellImage.nameLabel.text = item.itemText;
cellImage.infoLabel.text = item.itemInfo;
cellImage.checkbox.userInteractionEnabled = YES;
cellImage.nameLabel.userInteractionEnabled = NO;
if(item.itemIsChecked.boolValue == YES) {
cellImage.checkbox.tag = indexPath.row;
[cellImage.tapGesture addTarget:self action:@selector(didSelectedImageAtIndexPath:)];
cellImage.checkbox.image = [UIImage imageNamed:@"checkbox-checked.png"];
} else {
cellImage.checkbox.tag = indexPath.row;
[cellImage.tapGesture addTarget:self action:@selector(didSelectedImageAtIndexPath:)];
cellImage.checkbox.image = [UIImage imageNamed:@"open-checkbox.png"];
}
return cellImage;
}