如何访问tableview单元格中的子视图

时间:2011-07-28 13:39:07

标签: objective-c cocoa-touch uitableview

如何访问tableview单元格中的子视图? 在方法“sliderValueChange”中,我需要访问单元格中的标签。

这是我的代码:

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {

        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        cell.textLabel.font = [UIFont boldSystemFontOfSize:15];

    }
        cell.textLabel.text = @"Soglia";

        UISlider *slider = [[[UISlider alloc] initWithFrame:CGRectMake(174,12,168,23)] autorelease];
        slider.maximumValue = 70;
        slider.minimumValue = 5;
        [cell addSubview:slider];

        cell.accessoryView = slider;
        [slider addTarget:self action:@selector(sliderValueChange:) forControlEvents:UIControlEventValueChanged];
        [slider release];

        UILabel *labelVal = [[UILabel alloc] initWithFrame:CGRectMake(218, 40, 30, 23)];
        labelVal.text = @"0";
        [cell addSubview:labelVal];

    return cell;

}

- (void)sliderValueChange:(id)sender {
    UISlider *theSlider = (UISlider *)sender;
    UITableViewCell *cell = (UITableViewCell *)theSlider.superview;
    UITableView *tableView = (UITableView *)cell.superview;

    //here I need to access to labelVal...

}

1 个答案:

答案 0 :(得分:1)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {

        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        cell.textLabel.font = [UIFont boldSystemFontOfSize:15];

            //slider
        UISlider *slider = [[[UISlider alloc] initWithFrame:CGRectMake(174,12,168,23)] autorelease];
        slider.maximumValue = 70;
        slider.minimumValue = 5;
        slider.tag=11;
        [slider addTarget:self action:@selector(sliderValueChange:) forControlEvents:UIControlEventValueChanged];

        [cell.contentView addSubview:slider];



            //label
        UILabel *labelVal = [[UILabel alloc] initWithFrame:CGRectMake(218, 40, 30, 23)];

        labelVal.text = @"0";

        labelVal.tag=22;

        [cell.contentView addSubview:labelVal];




            //      cell.accessoryView = slider;



    }
    cell.textLabel.text = @"Soglia";





    return cell;

}

- (void)sliderValueChange:(id)sender {

    UISlider *theSlider = (UISlider *)sender;



    UIView *cell = (UIView *)theSlider.superview;


    UILabel *label=(UILabel*)[cell viewWithTag:22];


    NSLog(@"label value is : %@ \n\n",label.text);





}