2016-07-01 14 views
2

Hier ist mein CodeUITextField - iOS mehrzeilige Textfeld auf Alertview

Ich füge UITextField zu Alertview, was ich brauche, um die Daten aus dem Array erhalten mit mehreren Linien UITextField und bearbeitet werden soll.

NSString *selected = [lineItemsArray objectAtIndex:indexPath.row]; 
UIAlertController *controller = [UIAlertController          alertControllerWithTitle:@"Notice" message:@"Selected"         preferredStyle:UIAlertControllerStyleAlert]; 
[controller addTextFieldWithConfigurationHandler:^(UITextField *linetextField) 
{ 
    linetextField.text=selected; 
}]; 
UIAlertAction *alertAction = [UIAlertAction actionWithTitle:@"Okay" 
                 style:UIAlertActionStyleDestructive 
                handler:^(UIAlertAction *action) { 
                 [self.navigationController popViewControllerAnimated:YES]; 
                 NSLog(@"Dismiss button tapped!"); 
                }]; 
[controller addAction:alertAction]; 
[self presentViewController:controller animated:YES completion:nil]; 
PackageLineItemViewController *pLineVC = [[PackageLineItemViewController alloc]init]; 
pLineVC.view.backgroundColor = [UIColor whiteColor]; 
[self.navigationController pushViewController:pLineVC animated:YES]; 
[self.view endEditing:YES]; 
+0

prüfen diese https://github.com/wimagguc/ios-custom-alertview – kb920

+0

i die native Methode benötigen –

Antwort

1

Ich habe versucht, die Lösung für Ihre Frage.Wenn Sie AlertViewController mit TextField verwenden, können Sie nicht mehrere Zeilen.Für die Beschriftung können Sie mehrere Zeilen, sondern für Textfeld, die Sie nicht festlegen können.

#import "ViewController.h" 

@interface ViewController()<UITextFieldDelegate> 
{ 

    NSArray *arr; 
} 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    arr = [NSArray arrayWithObjects:@"iOS",@"Android",@"Windows",nil]; 

} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (IBAction)actionShowClickTextField:(id)sender 
{ 


    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil 
                      message:@"Enter your text" 
                    preferredStyle:UIAlertControllerStyleAlert]; 

[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) { 

    textField.delegate = self; 
    textField.text = @""; 
    for(int i=0;i<[arr count];i++) 
    { 
     textField.text = [textField.text stringByAppendingString:[NSString stringWithFormat:@"%@,\n",[arr objectAtIndex:i]]]; 
    } 

    NSLog(@"The textField text is - %@",textField.text); 
}]; 


    [self presentViewController:alertController animated:YES completion:nil]; 

    UIAlertAction *actionAlert = [UIAlertAction actionWithTitle:@"Save" 
                 style:UIAlertActionStyleDefault 
                handler:^(UIAlertAction * action) { 
                 // access text from text field 
                 NSString *text = ((UITextField *)[alertController.textFields objectAtIndex:0]).text; 
                 NSLog(@"The text is- %@",text); 
                }]; 
actionAlert.enabled = YES; 

[alertController addAction:actionAlert]; 


} 
@end 

Die gedruckten Ausgabeergebnisse sind

The textField text is - iOS, Android, Windows 
+0

dann sollten wir den Controller anpassen, um das Textfeld in mehrere Zeilen zu bekommen? –

+0

http://stackoverflow.com/questions/6398519/objective-c-how-to-create-a-multi-line-uitxtfield – user3182143

0

UITextFIeld ist spezifisch für eine Zeile. Sie können kein mehrzeiliges Textfeil haben. Wenn Sie mehrere Zeilen benötigen, sollten Sie UITextView wählen. Auch hier können Sie dem Alert Controller UITextView nicht hinzufügen. Sie müssen eine benutzerdefinierte Warnmeldungsansicht erstellen.

+0

i mit Textview versucht, ersetzen aber die Verursachung ein Fehler –

+0

Sie haben Recht. TExtView funktioniert nicht mit UIAlertcontroller. Sie sollten benutzerdefinierte alertView erstellen. Sie können UIAlertController nicht über seinen Gültigkeitsbereich hinaus anpassen. –

+0

, aber mit benutzerdefinierten Warnmeldungen wird etwas ausgefallen, so dass ich nach etwas suchen, das nativ ist –