2011-03-18 128 views
0

我有一個警報視圖,其中有一個文本字段。下面是代碼:需要擺脫一些警告

UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"Password" message:nil delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Enter", nil]; 
[myAlert addTextFieldWithValue:nil label:@"Type Password"]; 
[[myAlert textField] setSecureTextEntry:YES]; 
[[myAlert textField] setDelegate:self]; 
[[myAlert textField] setTextAlignment:UITextAlignmentCenter]; 
[[myAlert textField] becomeFirstResponder]; 
[myAlert show]; 
[myAlert release]; 
myAlert = nil; 

我得到包括[[myAlert textField]線4個警告,每個。我收到的警告是「找不到方法-addTextFieldWithValue:label:(返回類型默認爲'id')」和「找不到Method '-textField'(返回類型默認爲'id')。」我應該怎麼做才能解決這些問題?有沒有更好的方法來顯示警報視圖中的文本字段而沒有任何警告?

回答

4

您的警告原因是UIAlertView類沒有任何此類方法,例如addTextFieldWithValuetextField

一般來說,除了允許在幾個基本選項(「是/否」,「確定/取消」等)之間進行選擇之外,警報視圖不用於輸入。如果您需要用戶輸入密碼,則您的文本字段應位於常規視圖的某個位置。正是由於這個原因,你所使用的方法在UIAlertView中沒有實現。

參考:UIAlertView

+1

@Preston:您使用的UIAlertView中,這是什麼@Mac暗示,但並沒有明確說無證屬性和方法。 他們可能實際上工作,但您的應用程序可能會被蘋果拒絕使用它們。 (它們是警告,因爲你使用的公共頭不包含它們,所以編譯器會爲你標記它,實際的對象可能支持這些東西,這就是它在運行時不會爆炸的原因。 ) – 2011-03-18 01:47:50

+0

@quixoto:+1並感謝您的評論 - 我不知道這些方法實際上存在,但沒有記錄!每天學習新的東西...... :)另外,關於使用這種技術是應用程序拒絕的原因的好處。使用未公開的API也會使應用程序的維護和調試變得更加困難(如問題所示)。 @Preston:簡單的信息:儘量避免以不同尋常的方式做事! – Mac 2011-03-18 01:55:55