Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios tableview节标题中的复选框_Ios_Iphone_Objective C_Uitableview - Fatal编程技术网

Ios tableview节标题中的复选框

Ios tableview节标题中的复选框,ios,iphone,objective-c,uitableview,Ios,Iphone,Objective C,Uitableview,如何在tableview节标题中实现复选框。我的密码是 -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UIView *tempView=[[UIView alloc]initWithFrame:CGRectMake(0,200,300,244)]; tempView.backgroundColor=[UIColor clearColor];

如何在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];
            }
      }
我用一种方式回答它。否则,您必须通过interface builder执行此操作。

将tempView用户交互设置为启用

[tempView setUserInteractionEnabled:YES];
你可以最小化你的方法,比如

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

这是不是给了一些错误??创建断点并调试它。此代码中没有错误。我的问题是,按钮是图像没有改变。这是viewForHeaderInSection中的实际代码吗?没有回头路;最后?您认为在这种情况下,UIButton*selectedButton=UIButton*sender会符合吗;{如果[selectedButton isSelected]==YES{[selectedButton setSelected:NO];}其他{[selectedButton setSelected:YES];}你是说多余的花括号吗?它们对执行流没有影响。那里没有条件。