正如我在标题中所写的那样,我试图将选择器视图中选择的值(由数组填充)写入我单击的单元格的detailTextLabel
以显示选择器视图。 (pickerview显示在actionSheet中)。
我尝试做的是设置两个可变数组:pickerData
和tableData
。最初,pickerData
数组包含选择器视图中显示的值,tableData
数组只有一个值。
当调用以下方法时,我正在尝试将选择记录到tableData
数组上,然后使用此值替换detailTextLabel
上的原始值
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
[tableData replaceObjectAtIndex:row withObject:[pickerData objectAtIndex:row]];
}
detailTextLabel
由tableData
数组填充,这种情况发生在方法中:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
使用代码行:
cell.detailTextLabel.text = [pickerData objectAtIndex:indexPath.row];
我做错了什么?关于我应该如何做到这一点的任何建议?我已经编程了一个月,我确信这有一个简单的解决方案。提前谢谢!
答案 0 :(得分:0)
您说您正在使用tableData来更新detailTextLabel但是当您查看- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
时,您正在使用pickerData cell.detailTextLabel.text = [pickerData objectAtIndex:indexPath.row];
这会导致问题。您应该使用cell.detailTextLabel.text = [tableData objectAtIndex:indexPath.row];
并希望它能解决您的问题。
答案 1 :(得分:0)
您可以在pickerView didSelectRow
中访问detailTextLabel,然后将您的选择器值设置为此label
UILabel *detailTextLabel=(UILabel*)[[tableView cellForRowAtIndexPath:indexPath] detailTextLabel ];
detailTextLabel.text=[pickerData objectAtIndex:row];
答案 2 :(得分:0)
您需要初始化tableData NSMutableArray: self.tableData = [[[NSMutableArray alloc] init] autorelease];
id)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
UITableViewCell *cell =[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0];
cell.detailTextLabel.text = [pickerData objectAtIndex:row];
[self.tableData insertObject:[pickerData objectAtIndex:row] atIndex:index]
}