繁体   English   中英

UIButton修改UIImageView的图像

[英]UIButton modify image of UIImageView

我正在开发iPhone应用程序,需要一些帮助。 我创建了一个按钮,当我单击以通过按钮的按钮更改图像的imageView时,我想要一个按钮。

图片和按钮:

CGRect slot1Rect = CGRectMake(70, 90, 80, 110);
    UIImageView *slot1 = [[UIImageView alloc] initWithFrame:slot1Rect];
    [slot1 setImage:[UIImage imageNamed:@"carte_dos_rouge.png"]];
    slot1.opaque = YES; 
    [self.view addSubview:slot1];
    [slot1 release];



    UIButton *carte1J1=[UIButton buttonWithType:UIButtonTypeCustom];
    carte1J1.frame=CGRectMake(60, 240, 50, 73.0);
    [carte1J1 setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%@.png",[d getlist1:0]] ] forState:UIControlStateNormal] ;
    [carte1J1 addTarget:self action:@selector (clicCarte1J1)  forControlEvents:UIControlEventTouchUpOutside];
     [self.view addSubview:carte1J1];

那个行动:

- (void)clicCarte1J1:(UIImageView *)slot1 {

  [slot1 setImage:[UIImage imageNamed:@"K_spades.png"]]; }

我的问题是,当我单击carte1J1时没有任何反应,我应该在slot1 UIImageView上放置K_spades.png图像。

    [carte1J1 addTarget:self action:@selector (clicCarte1J1)  forControlEvents:UIControlEventTouchUpOutside];

...

- (void)clicCarte1J1:(UIImageView *)slot1 {

  [slot1 setImage:[UIImage imageNamed:@"K_spades.png"]]; 
}

是什么让您认为要修改的UIImageView会神奇地传递给该选择器? 因为它不会。 此外,您已经将按钮指向方法clicCarte1J1 ,然后实现了clicCarte1j1:这完全是一个不同的方法名称。

您需要做的是为该UIImageView创建一个@property,然后在目标方法中以这种方式获取它。 并将方法名称更改为-(void)clickCarte1J1不带参数。

存在以下问题:

  • @selector与实际方法不匹配(需要在“ clickCarte1J1:”末尾加冒号)
  • 您可能希望UIControlEventTouchUpInside不是UIControlEventTouchUpOutside
  • click方法假定参数为UIImageView,但实际上是被单击的UIButton

要解决此问题,请首先在slot1上设置tag属性,以便按钮的click方法可以在以后找到它:

CGRect slot1Rect = CGRectMake(70, 90, 80, 110);
UIImageView *slot1 = [[UIImageView alloc] initWithFrame:slot1Rect];
[slot1 setImage:[UIImage imageNamed:@"carte_dos_rouge.png"]];
slot1.opaque = YES; 
slot1.tag = 42; //use whatever number you like
[self.view addSubview:slot1];
[slot1 release];

然后将addTarget更改为此:

[carte1J1 addTarget:self action:@selector (clicCarte1J1)  forControlEvents:UIControlEventTouchUpInside];

并将click方法更改为此:

- (void)clicCarte1J1 {  
    UIImageView *slot1 = (UIImageView *)[self.view viewWithTag:42];
    [slot1 setImage:[UIImage imageNamed:@"K_spades.png"]]; 
}

暂无
暂无

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

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