1

我已经为此困惑了好几个小时了,所以我想是时候寻求帮助了!

我正在尝试访问UITextField嵌入在UITableViewCell子类 ( QuestionCell) 中的文本值。

问题是每当我尝试使用该cellForRowAtIndexPath方法访问单元格时,它都会返回(NULL)。

QuestionCell *qc = (QuestionCell*)[questionsTable cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
NSLog(@"qc %@",qc); // Gives "qc (NULL)" if there's text in the custom cell

仅当UITextField在自定义单元格中输入了文本时才会发生这种情况。如果没有文本,则单元格将按预期返回。

我正在使用带有情节提要的 XCode4.2,具有自定义样式和类UITableViewCell

这是我的 QuestionCell.h

#import <UIKit/UIKit.h>

@interface QuestionCell : UITableViewCell


@property (weak, nonatomic) IBOutlet UILabel *correctionLabel;
@property (weak, nonatomic) IBOutlet UIImageView *correctionMark;
@property (weak, nonatomic) IBOutlet UILabel *pronounLabel;
@property (weak, nonatomic) IBOutlet UITextField *answerInput;

@end

并且单元格是使用通常的委托方法创建的

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.section == 0)
    {
        QuestionCell *cell = nil;
        cell = [tableView dequeueReusableCellWithIdentifier:@"QuestionCell"];

        NSString *pronoun = nil;

        switch (indexPath.row) {
            case 0:
                pronoun = @"je";
                break;
            case 1:
                pronoun = @"tu";
                break;
            case 2:
                pronoun = @"il";
                break;
            case 3:
                pronoun = @"nous";
                break;
            case 4:
                pronoun = @"vous";
                break;
            case 5:
                pronoun = @"ils";
                break;
            default:
                break;
        }

        cell.pronounLabel.text = pronoun;

        return cell;
    }
    if (indexPath.section == 1)
    {
        ActionCell *cell = nil;
        cell = [tableView dequeueReusableCellWithIdentifier:@"ActionCell"];
        return cell;
    }
    return nil;
}
4

1 回答 1

1

上面的代码没有任何问题。我创建了一个测试项目,插入了这个QuestionCell(完整的UITextFieldUILabel对象)和你的tableView:cellForRowAtIndexPath,一切都很好。

UITableView方法cellForRowAtIndexPathnil在单元格滚动离开屏幕时返回(这是预期的行为)。但是有了这六个单元格,我遍历了表格的 `cellForRowAtIndexPath 并且一切都很好,无论我是否输入了文本。

从您随后的评论来看,您的单元格似乎已滚出屏幕。是的,那肯定会导致cellForRowAtIndexPath回归nil

于 2012-10-02T11:58:22.640 回答