我在UITableView中使用UIPickerView来选择整数值。我没有得到如何将值设置为特定单元格中的标签。以下是我的代码:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell;
cell = [self.mTicketTable dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
else{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.backgroundView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"cell.bg.png"]];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
lblType = [[UILabel alloc]initWithFrame:CGRectMake(10, 15, 90, 30)];
lblPrice = [[UILabel alloc]initWithFrame:CGRectMake(140, 15, 90, 30)];
lblSeat = [[UILabel alloc]initWithFrame:CGRectMake(232, 21, 52, 26)];
lblSeat.text = strSelected;
lblSeat.tag = indexPath.row+1;
lblSeat.textColor = [UIColor lightGrayColor];
lblSeat.textAlignment = NSTextAlignmentCenter;
lblSeat.backgroundColor = [UIColor clearColor];
UIButton *btnPicker = [UIButton buttonWithType:UIButtonTypeCustom];
[btnPicker setImage:[UIImage imageNamed:@"drop_down.png"] forState:UIControlStateNormal];
[btnPicker addTarget:self action:@selector(pickseats:) forControlEvents:UIControlEventTouchUpInside];
btnPicker.frame = CGRectMake(232, 20, 80, 30);
self.mPickerView = [[UIPickerView alloc] init];
self.mPickerView.frame = CGRectMake(228, 100, 90, 60);
self.mPickerView.showsSelectionIndicator = YES;
self.mPickerView.delegate = self;
self.mPickerView.dataSource = self;
[self.mPickerView setNeedsLayout];
self.mPickerView.transform = CGAffineTransformMakeScale(0.75f, 0.75f);
self.mPickerView.hidden = TRUE;
[self.view addSubview:self.mPickerView];
lblType.text = [arrType objectAtIndex:indexPath.row];
if([arrCost count] == 0)
{
lblPrice.text = @"0";
}
else{
lblPrice.text = [arrCost objectAtIndex:indexPath.row];
}
[cell addSubview:lblType];
[cell addSubview:lblPrice];
[cell addSubview:btnPicker];
[cell addSubview:lblSeat];
return cell;
}
-(NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
-(NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return 10;
}
-(NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return [numbers objectAtIndex:row];
}
-(void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
strSelected = [numbers objectAtIndex:row];
NSLog(@"str selection:%@", strSelected);
self.mPickerView.hidden = TRUE;
[self.mTicketTable reloadData];
}
请指导以上内容。
提前致谢。
答案 0 :(得分:2)
据我所知,你可以做的是:
首先为你的btnPicker和lblSeat分配标签,如
btnPicker.tag = indexPath.row;
lblSeat.tag = 11111;
然后在pickSeView的didSelectRow方法中为数组分配选定的值。
-(void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
int index = pickerView.tag;
strSelected = [numbers objectAtIndex:row];
NSIndexPath *path = [NSIndexPath indexPathForRow:index inSection:0];
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:path];
for (UIView* tempView in [cell subviews]) {
if ([tempView isKindOfClass:[UILabel class]]) {
if (tempView.tag == 11111) {
UILabel *lblTemp = (UILabel *)tempView;
lblTemp.text = strSelected;
break;
}
}
}
self.mPickerView.hidden = TRUE;
}
替换pickseats方法:
-(void)pickseats:(id)sender
{
UIButton *btn = (UIButton *) sender;
self.mPickerView.tag = btn.tag;
self.mPickerView.hidden = FALSE;
}
我认为这会奏效。如果不是让我知道。 THNKS。