2012-03-08 18 views
29

Zaktualizowana UIAlertView teraz ma styl, który pozwala polu tekstowym w UIAlertView tjJak mogę init, pole tekstowe w UIAlertView

alert.alertViewStyle = UIAlertViewStylePlainTextInput; 

Działa to dobrze, ale chciałem init tekst wejściowy z defualt tekst taki jak "sample".

widzę, że ludzie w przeszłości wykorzystywane nieudokumentowane API (który działa jak wielki)

[alert addTextFieldWithValue:@"sample text" label:@"Text Field"]; 

ale ponieważ wciąż nie jest oficjalnym Jabłko API publicznych nie mogę go używać.

Każdy inny sposób poradzenia sobie z tym? Próbowałem zainicjować w willPresentAlertView, ale pole tekstowe wydaje się być tylko do odczytu.

Dzięki

Odpowiedz

8

nie testowano, ale zakładam, że to będzie działać:

UIAlertView* alert = [[UIAlertView alloc] initWithTitle:...]; 
UITextField* textField = [alert textFieldAtIndex:0]; 
textField.text = @"sample"; 
[alert show]; 
57

UIALertView ma textFieldAtIndex: metodę, która zwraca obiekt UITextField chcesz.

Dla UIAlertViewStylePlainTextInput, indeks tekstowym 0.

Następnie można ustawić tekst zastępczy (lub) własność pola tekstowego:

UIAlertView *alert = .... 
UITextField *textField = [alert textFieldAtIndex:0]; 
textField.placeholder = @"your text"; 

UIAlertView Class Reference

+0

Wielki - dziękuję, że pracował – timeview

+1

Jesteś mile widziane :) Jeśli odpowiedział na to pytanie, można przyjąć odpowiedź klikając na kleszcza następnego do tego – Mutix

+0

To już nie działa. textFieldAtIndex generuje ten błąd: *** Kończenie aplikacji z powodu nieprzechwyconego wyjątku "NSInvalidArgumentException", powód: "textFieldIndex (0) znajduje się poza granicami tablicy pól tekstowych". – Symmetric

6

Dla domyślne ustawienie wartość w uiAlertView ta rzecz będzie działać.

UIAlertView *alert = .... 
UITextField *textField = [alert textFieldAtIndex:0]; 
[textField setText:@"My default text"]; 
[alert show]; 
0
- (IBAction)showMessage:(id)sender { 
    UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Add New Category" 
                 message:nil 
                delegate:self 
              cancelButtonTitle:@"Add" 
              otherButtonTitles:@"Cancel", nil]; 
    [message setAlertViewStyle:UIAlertViewStylePlainTextInput]; 
    [message show]; 
} 

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    NSString *title = [alertView buttonTitleAtIndex:buttonIndex]; 
    if([title isEqualToString:@"Add"]) 
    { 
     UITextField *username = [alertView textFieldAtIndex:0]; 
     NSLog(@"Category Name: %@", username.text); 
    } 
} 
9

Łatwy sposób na

UIAlertView *alerView = [[UIAlertView alloc] initWithTitle:@"your title" message:@"your message" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil]; 
    alerView.alertViewStyle = UIAlertViewStylePlainTextInput; 
    [[alerView textFieldAtIndex:0] setPlaceholder:@"placeholder text..."]; 
    [alerView show]; 
+0

Perfect Answer :) –