1

我在部分标题中添加了一个按钮,该按钮显示单击它的视图。我的需要是在显示视图时显示“向上箭头”图像,在隐藏视图时显示“向下箭头”图像。

我怎样才能做到这一点?请帮我 ...

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
    UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];
            [btn setFrame:CGRectMake(0, 0, 316, 60)];
            [btn setTag:section];
            [aView addSubview:btn];
            [btn addTarget:self action:@selector(sectionTapped:) forControlEvents:UIControlEventTouchDown];
            btn.backgroundColor=[UIColor clearColor];

}
4

3 回答 3

2

我建议您可以使用 2 张图片 - 1 张用于“向上”箭头,1 张用于“向下”箭头。将默认图像设置为状态 UIControlStateNormal 的 btn,并将其他图像设置为状态 UIControlStateSelected。现在在您的 sectionTapped: 方法中只需更改按钮的状态。因此,当您显示或隐藏视图时,您需要将按钮设置为选择是/否。

希望这可以帮助。

于 2013-04-26T06:39:02.370 回答
1

您可以尝试使用 BOOL 来检查按钮是否已被按下,并制作动画以旋转按钮中的图像以指向上方或下方。

-(IBAction)dropdownBtnClicked:(id)sender 
{

      [UIView beginAnimations:nil context:NULL];

      [UIView setAnimationDuration:0.5];

      if (!isDropdownEnabled) 
      { 
         //BOOL - checking if the button has been pressed or not

          isDropdownEnabled=TRUE;
          drpDwnBtn.transform=CGAffineTransformMakeRotation(270/180*M_PI);
      }

      else 
      {

          isDropdownEnabled=FALSE;

          drpDwnBtn.transform=CGAffineTransformMakeRotation(0);

       }

      [UIView commitAnimations];

  }
于 2013-04-26T06:29:11.733 回答
1

我以前在我的一个应用程序中做过这个。

将此代码作为Reference

1.具体方法。

- (void)methodName:(UIButton *)sender
 {
 int i = [sender.titleLabel.text intValue];
 NSNumber *numb;
if(i == 0)
{
    numb = [NSNumber numberWithBool:NO];
   sender.titleLabel.text = @"1";
   [sender setImage:[UIImage imageNamed:@"down.png"] forState:UIControlStateNormal];
   [sender setImage:[UIImage imageNamed:@"up.png"] forState:UIControlStateHighlighted];
 }
else
{
numb = [NSNumber numberWithBool:YES];
sender.titleLabel.text = @"0";
[sender setImage:[UIImage imageNamed:@"up.png"] forState:UIControlStateNormal];
[sender setImage:[UIImage imageNamed:@"down.png"] forState:UIControlStateHighlighted];
}
}

2.在UITabelview viewForHeaderInSection中以编程方式设置UIButton。

 UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(240, 20, 30, 30)];

[button addTarget:self
       action:@selector(methodName:)
 forControlEvents:UIControlEventTouchDown];
 button.tag = section;
 if([[sectionsArray objectAtIndex:section] boolValue])
 {
[button setImage:[UIImage imageNamed:@"up.png"] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"down.png"] forState:UIControlStateHighlighted];
button.titleLabel.text = @"0";
 }
 else
 {
  [button setImage:[UIImage imageNamed:@"down.png"] forState:UIControlStateNormal];
   [button setImage:[UIImage imageNamed:@"up.png"] forState:UIControlStateHighlighted];
  button.titleLabel.text = @"1";
  }
于 2013-04-26T06:41:54.780 回答