2011-08-14 21 views
6

Obecnie próbuję dowiedzieć się, czy możliwe jest sprawdzenie, którego obrazu używa przycisk.Jak sprawdzić obraz przycisków w Xcode

Powiedzmy, że mam image1 i image2.

Jeśli obraz przycisku jest obrazem1, wykonaj to i jeśli obraz przycisku jest obrazem 2, wykonaj to.

Ale Xcode robi mi dać żadnych opcji autouzupełniania ....

[m1 setImage:[UIImage imageNamed: @"Penguin.png"] forState:UIControlStateNormal]; 

ten sposób ustawić obrazy. ale jak mogę się dowiedzieć, czy to Penguin czy Penguin2?

Odpowiedz

6

Cocoa Touch został zaprojektowany w oparciu o wzorzec Model-View-Controller, dlatego warto spróbować zastosować ten wzorzec. Zamiast próbować odzyskać informacje o stanie - wybrany pingwin - z widoku - przycisk - przechowuje go w zmiennej instancji w klasie kontrolera.

Twój kod do ustawiania obrazu może wyglądać następująco:

self.currentImage = @"Penguin.png"; 
[m1 setImage:[UIImage imageNamed: currentImage] forState:UIControlStateNormal]; 

Wtedy, kiedy trzeba sprawdzić wartość:

if ([@"Penguin.png" isEqual:self.currentImage]) { 
    do something; 
} 
3

Sprawdzenie równości obrazów odbywa się tak:

if ([[UIImage imageNamed:@"Penguin.png"] isEqual:m1.currentImage]) { 
    // do something 
} 
+0

Nie sądzę, żeby to działało, bo ause próbujesz porównać dwa różne wystąpienia tego samego ojca. Powinien zawsze drukować fałszywe –

+0

To działa na moim komputerze. Wypróbuj to. – nicholjs

+0

To będzie działać tylko jeśli ustawisz obraz na m1 z metody [UIImage imageNamed:], ponieważ utrzymuje połączenie przez cały czas, gdy jest używany, ale jeśli spróbujesz ustawić przez [[UIImage alloc] initWithContentsOfFile:] to zawsze będzie fałszem –

2

Można użyć 2 metod:

1.

UIImage *image = self.myButton.currentBackgroundImage; 

2.

myImageView.image = [myButton backgroundImageForState:myButton.state]; 
2
UIImage *img=[(UIButton *) sender currentImage]; 

if(img == [UIImage imageNamed:@"edit"]) 
{ 
    //If do something 
}` 

spróbować tej nadziei będzie pracować

+0

Jeśli to nie działa, dodaj @ "edit.png" lub format obrazu. dla mnie działa poprawnie – krishh

5

Wystarczy stosować ten kod do przycisku akcji na podstawie obrazu

- (IBAction)checkButtonClicked:(UIButton *)sender { 

    if ([checkButton.currentImage isEqual:[UIImage imageNamed:@"checkbox.png"]]) 
     [checkButton setImage:[UIImage imageNamed:@"Checked.png"] forState:UIControlStateNormal]; 
//do some thing here for your image1 

     else 
    [checkButton setImage:[UIImage imageNamed:@"checkbox.png"] forState:UIControlStateNormal]; 
    //do some thing here for your image 2 

} 
Powiązane problemy