2013-02-13 61 views
1

我和我的好友正在開發一款應用程序,我們都是新手,但已經有很長的路要走。在alertView語句中調用IBaction

我們現在被困在這件事上。我們有一堆texfields,通過這個動作,我們有清楚的按鈕鏈接到它,但是,如果您在其中一個警報視圖按鈕上單擊「是」,我們希望該動作被調用。

- (IBAction)clearText:(id)sender { 

Spelare1Slag1.text = @""; 
Spelare1Slag2.text = @""; 

}

我們也有這樣的警報視圖:

 alertDialog = [[UIAlertView alloc] 
    initWithTitle: @"Warning" 
    message: @"Do you want to delete?" 
    delegate: self 
    cancelButtonTitle: @"No" 
    otherButtonTitles: @"Yes", nil]; 

- (void)alertView: (UIAlertView *)alertView 
clickedButtonAtIndex:(NSInteger)buttonIndex { 
    NSString *buttonTitle=[alertView buttonTitleAtIndex:buttonIndex]; 
    if ([buttonTitle isEqualToString:@"No"]) { 
    } 

    else if ([buttonTitle isEqualToString:@"Yes"]){ 
     Spelare1Slag1.text = @""; 
    } 

}

因此,這是我們認爲我們應該這樣做,但我們不知道該怎麼放在else if語句中。當您在警報視圖中按下「是」按鈕時,我們希望文本框清除,而不是在按「否」時不清除。

在此先感謝!

回答

2

明文方法,我假設,是你創建的一個自定義的方法來刪除兩個字段中的文本嗎?因此,而不是它作爲一個IBAction爲,它應該是一個無效的方法:

- (void)clearText { 
Spelare1Slag1.text = @""; 
Spelare1Slag2.text = @""; 
} 

現在你需要在你的UIAlertView中委託方法做的,就是調用明文方法:

- (void)alertView: (UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
NSString *buttonTitle=[alertView buttonTitleAtIndex:buttonIndex]; 
    if ([buttonTitle isEqualToString:@"Yes"]){ 
     [self clearText]; 
    } 
} 

希望這有助於

+0

這看起來很有希望,明天我會看着它,我不在家atm! – Laymachine 2013-02-14 15:15:42

+0

解決了它,謝謝! – Laymachine 2013-02-15 21:37:50

2

如果用戶點擊了,您可以解僱AlertViewNO如果我正確理解問題。

你可以辭退這樣

[alertView dismissWithClickedButtonIndex:0 animated:YES]; 

的alertview但一定要看看是否NO具有索引0或1,如果你不知道,然後就去做這樣的

[alertView dismissWithClickedButtonIndex:nil animated:YES]; 
1

IBAction類型的方法就像任何其他方法一樣,您可以直接在代碼中調用它們。實際上,IBAction僅僅是一個評估void的宏。通常,當需要在觸發的目標/操作事件的上下文之外調用發送者參數時,您將傳遞一個nil

[self clearText:nil]; 
1

爲什麼你需要檢查實際的按鈕文本?檢查按鈕索引是最有效的方法。如果你的alertView中有兩個字段,只要檢查一下索引是0還是1就可以了。你做額外的工作檢查實際的文字。

順便說一句,只要檢查YES按鈕的索引,如果你不需要做任何具體的事情,當他們按沒有。 (如果不需要,不要檢查兩個索引)。