2009-05-23 11 views
25

Tworzę przycisk i ustawiam tytuł jako "Kliknij tutaj". Po naciśnięciu tego przycisku chcę uzyskać tytuł tego przycisku i zalogować go. Oto mój kod, gdzie się mylę?Uzyskiwanie tytułu UIButton w module obsługi zdarzeń

-(void)clicketbutton { 
    UIButton *mybutton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [mybutton setTitle:@"Click here" forState:UIControlStateNormal]; 
    [mybutton addTarget:self 
     action:@selector(displayvalue:)forControlEvents:UIControlEventTouchUpInside]; 
} 

-(void)displayvalue:(id)sender {  
    UIButton *resultebutton= [UIButton buttonWithType:UIButtonTypeCustom]; 

    resultebutton=sender;// pls clear here.. my question here , it it possible or not. if possible how ? 
    NSLog(@" The buttontitile is %@ ", [resultebutton.Title] // here also. 
} 

Odpowiedz

72

Twój displayvalue: metoda powinna wyglądać mniej więcej tak:

-(void)displayvalue:(id)sender {  
    UIButton *resultButton = (UIButton *)sender; 
    NSLog(@" The button's title is %@.", resultButton.currentTitle); 
} 

(. Proszę sprawdzić dokumentację w Xcode, to dałem wam właściwą odpowiedź)

+1

bardzo dobre okrzyki –

13
-(void)displayvalue:(id)sender 
{ 
    UIButton *resultebutton= (UIButton*)sender; 
    NSLog(@"The button title is %@ ", resultebutton.titleLabel.text); 
} 
1
-(void)clicketbutton { 
    UIButton *mybutton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [mybutton setTitle:@"Click here" forState:UIControlStateNormal]; 
    [mybutton addTarget:self 
     action:@selector(displayvalue:)forControlEvents:UIControlEventTouchUpInside]; 
} 
-(void)displayvalue:(id)sender {  

    NSLog(@"The title is %@ ", [mybutton titleForState:UIControlStateNormal]); 

} 
+1

Nie sądzę, to będzie działać w ogóle. Aby to działało, 'mójbutton' musi być zmienną instancji, ale musisz również przypisać przycisk do zmiennej instancji w' -clicketbutton' - obecnie ta metoda używa zmiennej lokalnej. Innymi słowy, 'mybutton' reprezentuje różne rzeczy w twoich dwóch metodach. –

+0

@ ThomasMüller correct. Zmienna 'myButton' jest poza zakresem funkcji displayValue: Mogłoby to jednak zadziałać, gdyby użył "nadawcy" zamiast odbiornika "myButton" – mylogon

3

Wiem, że to trochę stare pytanie, ale jest to prawdopodobnie najlepszy sposób na rozwiązanie tego.

NSLog(@"The button title is: %@", [sender currentTitle]);   

Edit
Właśnie sobie sprawę, że to zależy od tego, że masz ustawić parametr odbiorczej do UIButton*. Zamiast używać domyślnego obiektu id, należy utworzyć obiekt i odrzucić ten przycisk do postaci (id)sender. Wyciąć w środku człowieka i po prostu ustawić podpis funkcyjny

-(void)buttonPressed:(UIButton*)sender{ 
    NSLog(@"Button title: %@",sender.currentTitle); 
} 

to skutecznie odlewania parametr funkcji

Powiązane problemy