繁体   English   中英

滚动UITableView时如何显示选中的图像?

[英]How to display checked images while scrolling the UITableView?

UITable视图工作正常。 当滚动选中的图像更改为取消选中时。 而且我还需要在“保存”按钮Action中获取特定的已检查图像数据。任何机构都可以帮助我解决prj中的此问题。

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:nil];
    if(cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
        cell.backgroundColor = [UIColor clearColor];

        cell.selectionStyle= UITableViewCellSelectionStyleNone;
    }

        UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(10,10, 20, 20)];
       [btn setImage:[UIImage imageNamed:@"unchecked.png"] forState:UIControlStateNormal];        [cell addSubview:btn];
        btn.tag=4;
        forState:UIControlStateNormal];
        [btn addTarget:self action:@selector(checkBoxClicked:) forControlEvents:UIControlEventTouchUpInside];



        UILabel *lbl_name =[[UILabel alloc]initWithFrame:CGRectMake(35, 10, 100, 20)];
        lbl_name.text=[NSString stringWithFormat:@"%@",[[arr1 valueForKey:@"Name"]objectAtIndex:indexPath.row]];
        lbl_name.tag=5;
        lbl_name.textColor=[UIColor blackColor];
        [lbl_name setTextAlignment:NSTextAlignmentCenter];
        lbl_name.font=[UIFont systemFontOfSize:15];
        [cell addSubview:lbl_name];

    return cell;

}

-(void)checkBoxClicked:(id)sender
{
    UIButton *tappedButton = (UIButton*)sender;
    if([tappedButton.currentImage isEqual:[UIImage imageNamed:@"unchecked.png"]])
    {
        [sender  setImage:[UIImage imageNamed: @"checked.png"] forState:UIControlStateNormal];
    } else {
        [sender setImage:[UIImage imageNamed:@"unchecked.png"]forState:UIControlStateNormal];
    }
}

您可以使用不同的状态来设置图像。

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:nil];
    if(cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
        cell.backgroundColor = [UIColor clearColor];

        cell.selectionStyle= UITableViewCellSelectionStyleNone;
    }

        UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(10,10, 20, 20)];
       [btn setImage:[UIImage imageNamed:@"unchecked.png"] forState:UIControlStateNormal];  
        [sender  setImage:[UIImage imageNamed: @"checked.png"] forState:UIControlStateSelected]; 
        btn.selected=NO;  
        btn.tag=4;
        [btn addTarget:self action:@selector(checkBoxClicked:) forControlEvents:UIControlEventTouchUpInside];
        [cell addSubview:btn];

        UILabel *lbl_name =[[UILabel alloc]initWithFrame:CGRectMake(35, 10, 100, 20)];
        lbl_name.text=[NSString stringWithFormat:@"%@",[[arr1 valueForKey:@"Name"]objectAtIndex:indexPath.row]];
        lbl_name.tag=5;
        lbl_name.textColor=[UIColor blackColor];
        [lbl_name setTextAlignment:NSTextAlignmentCenter];
        lbl_name.font=[UIFont systemFontOfSize:15];
        [cell addSubview:lbl_name];

    return cell;

}

-(void)checkBoxClicked:(id)sender
{
    UIButton *tappedButton = (UIButton*)sender;
     if (tappedButton.isSelected) {
    tappedButton.selected=NO;
}
else
{
    tappedButton.selected=YES;
}
}

取一个数组,该数组用于存储Selected按钮的IndexValue,

@property (nonatomic,retain) NSMutableArray *arySelected;

在ViewDidLoad中初始化数组,

- (void)viewDidLoad {

    [super viewDidLoad]; 
    self.arySelected = [[NSMutableArray alloc] init];

}

更改TableViewCell委托的代码,

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        if(cell == nil)
        {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
            cell.backgroundColor = [UIColor clearColor];

            cell.selectionStyle= UITableViewCellSelectionStyleNone;
        }

        UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(10,10, 20, 20)];

        if (![arySelected containsObject:[NSString stringWithFormat:@"%ld",(long)indexPath.row]])
        {
            [btn  setImage:[UIImage imageNamed: @"checked.png"] forState:UIControlStateSelected];

        }
        else
        {
            [btn setImage:[UIImage imageNamed:@"unchecked.png"] forState:UIControlStateNormal];

        }

        btn.tag=indexPath.row;
        [btn addTarget:self action:@selector(checkBoxClicked:) forControlEvents:UIControlEventTouchUpInside];
        [cell addSubview:btn];

        UILabel *lbl_name =[[UILabel alloc]initWithFrame:CGRectMake(35, 10, 100, 20)];
        lbl_name.text=[NSString stringWithFormat:@"%@",[[arr1 valueForKey:@"Name"]objectAtIndex:indexPath.row]];
        lbl_name.tag=5;
        lbl_name.textColor=[UIColor blackColor];
        [lbl_name setTextAlignment:NSTextAlignmentCenter];
        lbl_name.font=[UIFont systemFontOfSize:15];
        [cell addSubview:lbl_name];

        return cell;
}

//在事件按钮上,

-(void)checkBoxClicked:(id)sender
{
    sender.selected  = ! sender.selected;

    if (sender.selected)
    {
        [arySelected addObject:[NSString stringWithFormat:@"%ld",(long)sender.tag]];
    }
    else
    {
        [arySelected removeObject:[NSString stringWithFormat:@"%ld",(long)sender.tag]];
    }


    [self.tableView reloadData];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM