繁体   English   中英

Tableview部分标题中的复选框

[英]Checkbox in tableview section header

如何在tableview部分标题中实现复选框。 我的代码是

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *tempView=[[UIView alloc]initWithFrame:CGRectMake(0,200,300,244)];
    tempView.backgroundColor=[UIColor clearColor];

     UIButton *leftSecCheckBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    [leftSecCheckBtn setBackgroundImage:[UIImage imageNamed:@"checkbox_empty.png"] forState:UIControlStateNormal];
    [leftSecCheckBtn setBackgroundImage:[UIImage imageNamed:@"checkmark_Tick.png"] forState:UIControlStateSelected];
    [leftSecCheckBtn setFrame:CGRectMake(22,-2, 26, 26)];
    [leftSecCheckBtn addTarget:self
               action:@selector(leftSectionCheckBox:)
     forControlEvents:UIControlEventTouchUpInside];
    [tempView addSubview:leftSecCheckBtn];

}

-(void)leftSectionCheckBox:(id)sender
{   
    UIButton *selectedButton = (UIButton *) sender;
    {
        if([selectedButton isSelected ]==YES)
        {
            [selectedButton setSelected:NO];
        }
        else
        {
            [selectedButton setSelected:YES];
        }
    }
}

在ViewForHeader函数中添加了按钮,但是,按钮的图像没有改变,

我认为这可以帮助:

-(void)leftSectionCheckBox:(UIButton *)sender  {  

sender.selected = !sender.isSelected;
if([selectedButton isSelected ]==YES)  [selectedButton setSelected:NO];
else  [selectedButton setSelected:YES];
}

或者您可以这样做:

-(void)leftSectionCheckBox:(id)sender {  
for (UIButton * selectedButton in [[tableView headerViewForSection:0]subviews]) {
    if ([selectedButton isKindOfClass:[UIButton class]]) {
       if([selectedButton isSelected ]==YES) [selectedButton setSelected:NO];
       else  [selectedButton setSelected:YES];
      }
}}

尝试这个

    -(void)leftSectionCheckBox:(id)sender
    {   
        UIButton *selectedButton = (UIButton *) sender;

            if([selectedButton isSelected ]==YES)
            {
                [selectedButton setSelected:NO];
                [leftSecCheckBtn setBackgroundImage:[UIImage imageNamed:@"checkbox_empty.png"] forState:UIControlStateNormal];
            }
            else
            {
                [selectedButton setSelected:YES];
                [leftSecCheckBtn setBackgroundImage:[UIImage imageNamed:@"checkmark_Tick.png"] forState:UIControlStateNormal];
            }
      }

我更新了答案之一。 否则,您必须通过界面生成器来完成。

将您的tempView用户交互设置为启用,

[tempView setUserInteractionEnabled:YES];

您可以最小化您的方法,例如

-(void)leftSectionCheckBox:(UIButton *)selectedButton
{    
  selectedButton.selected = !selectedButton.selected;
}

暂无
暂无

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

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