我创建了一个自定义表格视图单元格,我希望其中的隐藏文本视图变为可见,并在用户选择该行时进行编辑。以下是我尝试过的方法(此单元格仅出现在某个部分的最后一行)
表格视图委托
- (void)tableView:(UITableView *)tableViewVar didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
...
if (indexPath.row == (int)[self.selectedLabels count] - 1 ) {
[self.lastCell addCustomInfo];
}
}
表格视图数据源
- (UITableViewCell *)tableView:(UITableView *)tableViewVar cellForRowAtIndexPath:(NSIndexPath *)indexPath {
...
UITableViewCell *cell;
if (indexPath.row != [self.labels count] - 1) {
...
} else {
cell = [self produceTableCellWithNibName:@"SignUpSurveyInputRowTableViewCell" inTableView:tableView withCellIdentifier:@"SignUpSurveyTableViewCell"];
self.lastCell = cell;
}
...
return useCell;
}
- (UITableViewCell *) produceTableCellWithNibName:(NSString *)nibName inTableView:(UITableView *)tableViewVar {
return [self produceTableCellWithNibName:nibName inTableView:tableViewVar withCellIdentifier:nibName];
}
- (UITableViewCell *) produceTableCellWithNibName:(NSString *)nibName inTableView:(UITableView *)tableViewVar withCellIdentifier:(NSString*) cellId {
UITableViewCell *cell = [tableViewVar dequeueReusableCellWithIdentifier:cellId];
if( cell == nil ) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:nibName owner:self options:nil];
for (id currentObject in topLevelObjects){
if ([currentObject isKindOfClass:[UITableViewCell class]]) {
cell = currentObject;
break;
}
}
}
return cell;
}
表格查看单元格方法
- (void) addCustomInfo {
NSLog(@"inside add custom info");
self.surveyTextView.userInteractionEnabled = YES;
self.surveyTextView.hidden = NO;
self.surveyTextLabel.hidden = YES;
[self setNeedsDisplay];
[self.surveyTextView becomeFirstResponder];
}
- (BOOL)textViewShouldReturn:(UITextView *)textViewVar {
[textViewVar resignFirstResponder];
return YES;
}
- (void) textViewDidChange:(UITextView *) textViewVar
{
[UIView animateWithDuration:0.1 animations:^{
[textViewVar invalidateIntrinsicContentSize];
}];
}
目前,当我选择相关的表格视图单元格时,我会看到日志语句inside add custom info
,但没有任何反应 - 没有编辑开始,标签不会消失,文本视图也不会显示。
如何获得以下所需的行为:
以下是我尝试的内容:
我最好的猜测是,我运行方法的单元格不是我在桌面视图中显示的实例化的单元格,但我已经在使用dequeue
所以我还可以做什么来排除故障或确保我在适当的单元格上调用该方法?