0

私の iOS アプリケーションでは、ボタンのクリックごとに画像を変更する必要があります。別のフレームのループから生成した単一の UIButton のトグルを実行する必要があります

単一のボタンでアクションを実行すると正常に動作しますが、複数のボタンでアクションを実行すると、ボタンのアクションに従って画像が適切に変更されません

これが私のボタンです

btnFullScreen = [[UIButton alloc] init];
    [btnFullScreen setBackgroundImage:[UIImage imageNamed:@"open icon.png"] forState:UIControlStateNormal];
    [btnFullScreen setFrame:CGRectMake(self.view.frame.size.width-30,8,16,14)];
    [btnFullScreen setBackgroundImage:[UIImage imageNamed:@"close icon.png"] forState:UIControlStateSelected];
    [btnFullScreen addTarget:self action:@selector(showPopUp:) forControlEvents:UIControlEventTouchUpInside];
    btnFullScreen.autoresizingMask=UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleBottomMargin;
    [self.view addSubview:btnFullScreen];

これが私のボタンアクションコードです

-(void)showPopUp:(id)sender{
if ([sender isSelected]) {
    [sender setImage:[UIImage imageNamed:@"open icon.png"] forState:UIControlStateNormal];
    [sender setSelected:NO];
}else {
    [sender setImage:[UIImage imageNamed:@"close icon.png"] forState:UIControlStateSelected];
    [sender setSelected:YES];
}
[self.parent.parent addPopOversExcept:self.parent];

}

ありがとう

4

1 に答える 1

0

私は自分のアプリの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.UITabelviewviewForHeaderInSectionで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-03-15T12:31:10.380 に答える