当自定义UITableViewCell的UITextField中有文本时,cellForRowAtIndexPath返回null

时间:2012-10-01 15:48:03

标签: ios5 uitableview

我真的对此感到非常困惑,所以我觉得是时候寻求帮助了!

我正在尝试访问嵌入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;
}

1 个答案:

答案 0 :(得分:1)

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

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

根据您后续的评论,您的单元格似乎已滚出屏幕。是的,这肯定会导致cellForRowAtIndexPath返回nil