簡體   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