UIButton изменить изображение UIImageView - PullRequest
0 голосов
/ 18 октября 2010

Я разрабатываю приложение для 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, ничего не происходит, у меня должно быть изображение K_spades.png в slot1 UIImageView.

Ответы [ 2 ]

0 голосов
/ 18 октября 2010

Существуют следующие проблемы:

  • @selector не соответствует фактическому методу (требуется двоеточие в конце "clickCarte1J1:")
  • вы, вероятно, хотите, чтобы UIControlEventTouchUpInside не UIControlEventTouchUpOutside
  • метод click предполагает, что параметром является UIImageView, но на самом деле это будет UIButton, который был нажат

Чтобы исправить это, сначала установите свойство тега в slot1, чтобы метод нажатия кнопки мог его найти.позже:

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

И измените метод щелчка следующим образом:

- (void)clicCarte1J1 {  
    UIImageView *slot1 = (UIImageView *)[self.view viewWithTag:42];
    [slot1 setImage:[UIImage imageNamed:@"K_spades.png"]]; 
}
0 голосов
/ 18 октября 2010
    [carte1J1 addTarget:self action:@selector (clicCarte1J1)  forControlEvents:UIControlEventTouchUpOutside];

...

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

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

Что заставляет вас думать, что UIImageView, который вы хотите изменить, волшебным образом будет передан этому селектору?Потому что это не так.Кроме того, вы указали свою кнопку на метод clicCarte1J1, а затем внедрили clicCarte1j1:, который является совершенно другим именем метода.

Вам нужно сделать @property для этого UIImageView и получитьчтобы это так внутри вашего целевого метода.И измените имя метода на -(void)clickCarte1J1 без аргумента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...