我使用tableview和可重用單元格。在每個單元上我都有一個帶有文本的textField,我可以修改它。如果文本爲空,則刪除該單元格。使用cellForRowAtIndexPath修改現有的可重用單元格:方法
比方說,我們有100行,我們要修改的行數1:我們敲擊它,給一個空字符串@「」,向下滾動到位置號碼50並點擊該小區。
現在所要的是,我們發現輕拍手勢另一個單元格和我打電話的方法textFieldDidEndEditing:看我應該從tableview中刪除該小區。我使用cellForRowAtIndexPath:獲取修改後的單元格。
的問題是,似乎有其他細胞的空文本域。我刪除了修改後的單元格,但只有一個。我認爲這是可重複使用的單元的問題。
能有人能幫助我解決這個問題?
- (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;
}
請張貼一些代碼。但無論如何,最好的辦法是將模型(文本字段的數據)和視圖(單元格與文本字段)分開,保持模型與數據更改保持一致,並且每次從模型中加載單元格。 – Mohammad
通用評論:嘗試刪除nameLabel.delegate並使用標記和tapGesture。你會遇到與每個問題,嘗試使用didSelectRowAtIndexPath和cellForRowAtIndexPath獲得相同的功能 – JOM