我真的对此感到非常困惑,所以我觉得是时候寻求帮助了!
我正在尝试访问嵌入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;
}
答案 0 :(得分:1)
上面的代码没有错。我创建了一个测试项目,插入了这个QuestionCell
(包含UITextField
和UILabel
个对象)和你的tableView:cellForRowAtIndexPath
,一切都很好。
UITableView
方法cellForRowAtIndexPath
仅在单元格滚出屏幕时才返回nil
(这是预期的行为)。但是有了这六个单元格,我遍历了表格的`cellForRowAtIndexPath,一切都很好,无论我是否输入了文本。
根据您后续的评论,您的单元格似乎已滚出屏幕。是的,这肯定会导致cellForRowAtIndexPath
返回nil
!