2013-11-18 4 views
1

Как реализовать флажок в заголовке раздела таблицы. мой код:Флажок в заголовке секции 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, но изображение кнопки не меняется,?

+0

ли это дать некоторую ошибку ?? сделать точку останова и отладить ее. –

+0

ошибок нет в этом коде. моя проблема в том, что кнопка изображения не меняется. – Ramdhas

+0

Это реальный код в viewForHeaderInSection? В конце нет 'return tempView;' в конце? – Anna

ответ

0

Я думаю, что это может помочь:

-(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]; 
     } 
}} 
0

Попробуйте

-(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]; 
      } 
     } 

Я обновленный ответ это один из пути. В противном случае вы должны сделать это через конструктор интерфейса.

+0

В чем разница между этим и исходным кодом? – Anna

+0

Считаете ли вы, что в этом состоянии будет работать UIButton * selectedButton = (UIButton *) отправитель; { if ([selectedButton isSelected] == YES) { [selectedButton setSelected: NO]; } else { [selectedButton setSelected: YES]; } } –

+0

Вы имеете в виду дополнительные фигурные скобки? Они не влияют на поток выполнения. Там нет никаких условий. – Anna

0

Set включен ваше взаимодействие tempView пользователя,

[tempView setUserInteractionEnabled:YES]; 

И вы можете уменьшить свой метод, как,

-(void)leftSectionCheckBox:(UIButton *)selectedButton 
{  
    selectedButton.selected = !selectedButton.selected; 
} 
Смежные вопросы