tableviewcell detailtextlabel上的uipickerview选择

时间:2013-02-01 14:27:32

标签: iphone ios objective-c uitableview uipickerview

正如我在标题中所写的那样,我试图将选择器视图中选择的值(由数组填充)写入我单击的单元格的detailTextLabel以显示选择器视图。 (pickerview显示在actionSheet中)。

我尝试做的是设置两个可变数组:pickerDatatableData。最初,pickerData数组包含选择器视图中显示的值,tableData数组只有一个值。

当调用以下方法时,我正在尝试将选择记录到tableData数组上,然后使用此值替换detailTextLabel上的原始值

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    [tableData replaceObjectAtIndex:row withObject:[pickerData objectAtIndex:row]];
}

detailTextLabeltableData数组填充,这种情况发生在方法中:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

使用代码行:

cell.detailTextLabel.text = [pickerData objectAtIndex:indexPath.row];

我做错了什么?关于我应该如何做到这一点的任何建议?我已经编程了一个月,我确信这有一个简单的解决方案。提前谢谢!

3 个答案:

答案 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]
}