内部に UIPickerView があるカスタム UITableViewCell があります。それを管理するために、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 移動)。
ただし、実際の行数 (この例では 7) を返すようにnumberOfRowsInComponentを変更すると、すべてがうまく機能します。
試してみましたが、問題/解決策が見つかりません。どんな助けでも大歓迎です。前もって感謝します!
編集!@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