我有一个自定义 UITableViewCell ,里面有一个 UIPickerView 。为了管理它,我创建了一个子类,在其中实现了 UIPickerView 委托和数据源方法。当我这样实现的 cellForRowAtIndexPath 时:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.section==2) {
PickerCellTableViewCell *cell2=[tableView dequeueReusableCellWithIdentifier:@"pickerCell" forIndexPath:indexPath];
cell2.cellPickerInputArray=self.pickerArray;
return cell2;
}else{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"normalCell" forIndexPath:indexPath];
cell.textLabel.text=[[self.inputArray objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
return cell;
}
}
在子类 .m 文件中,我有以下内容:
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return [self.cellPickerInputArray count];
}
我有以下问题:如果我这样离开它,它会崩溃,控制台会给我这个:
无效更新:第 0 节中的行数无效。更新后现有节中包含的行数 (7) 必须等于更新前该节中包含的行数 (0),加上或减去数字从该部分插入或删除的行数(0 插入,0 删除)加上或减去移入或移出该部分的行数(0 移入,0 移出)。
但是,如果我更改numberOfRowsInComponent : 以返回实际的行数(在此示例中为 7),则一切正常。
我一直在尝试,但找不到问题/解决方案。任何帮助,将不胜感激。提前致谢!
编辑!正如@meda I NSLoged NSLog(@"PickerInputArray count"%@",[self.cellPickerInputArray
count 所建议的那样]);在方法pickerView numberOfRowsInComponent内部
这里:
2014-03-30 21:04:54.756 TestPickerOnTable[3498:60b] PickerInputArray count0
2014-03-30 21:04:54.757 TestPickerOnTable[3498:60b] PickerInputArray count0
2014-03-30 21:04:54.758 TestPickerOnTable[3498:60b] PickerInputArray count0
2014-03-30 21:04:54.758 TestPickerOnTable[3498:60b] PickerInputArray count0
2014-03-30 21:04:54.762 TestPickerOnTable[3498:60b] PickerInputArray count7
2014-03-30 21:04:54.765 TestPickerOnTable[3498:60b] PickerInputArray count7
2014-03-30 21:04:54.767 TestPickerOnTable[3498:60b] PickerInputArray count7
2014-03-30 21:04:54.770 TestPickerOnTable[3498:60b] PickerInputArray count7
2014-03-30 21:04:54.771 TestPickerOnTable[3498:60b] PickerInputArray count7
2014-03-30 21:04:54.771 TestPickerOnTable[3498:60b] PickerInputArray count7