iphone – 从UIAlertView获取文本

我正在尝试从警报视图中获取文本,并将其添加到我的可变数组以在表视图中列出。我意识到有几个月前发布的类似问题,但我不明白如何利用给定的答案。

-(IBAction)insert {
    UIAlertView* dialog = [[UIAlertView alloc] init];
    [dialog setDelegate:self];
    [dialog setTitle:@"Enter Name"];
    [dialog setMessage:@" "];
    [dialog addButtonWithTitle:@"Cancel"];
    [dialog addButtonWithTitle:@"OK"];

    UITextField *nameField = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 45.0, 245.0, 25.0)];
    [nameField setBackgroundColor:[UIColor whiteColor]];
    [dialog addSubview:nameField];
    [dialog show];

    [data addObject:[nameField text]];
    [mainTableView reloadData];

但是我的应用程序崩溃,因为它表示我试图在索引0中插入一个零对象。我做错了什么?

编辑:好的,我想我没有一个方法来处理警报视图。所以我发现这个:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    NSString *buttonTitle=[alertView buttonTitleAtIndex:buttonIndex];
    if([buttonTitle isEqualToString:@"Cancel"]) {
        return;
    }
    else if([buttonTitle isEqualToString:@"Ok"]) {
        [data addObject:nameField.text];

    }

现在我只需要连接件,但不知道如何。

使用UIAlertView时人们常犯的一个错误是他们认为发送显示消息会阻塞主线程。它不是。您的代码继续执行,即使屏幕上有警报。因此,您传入的UITextField不存在值。

您需要做的是在UIViewController中实现UIAlertViewDelegate,以抓取用户输入到文本字段的任何内容。也就是说,您仍然需要检查一个零值,因为如果不输入任何内容,则文本值将为零。

更新:此答案发布在苹果公司创建一个API之前通过UIAlertViewStyle添加一个UITextField到警报。这是从@matt借来的更新的代码

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Enter Name"
                                                message:@"  "   
                                               delegate:self 
                                      cancelButtonTitle:@"Cancel"
                                      otherButtonTitles:@"OK", nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
[alert show];

然后在UIAlertViewDelegate回调:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (buttonIndex == 1) {
        NSString *name = [alertView textFieldAtIndex:0].text;
        // Insert whatever needs to be done with "name"
    }
}
http://stackoverflow.com/questions/4560346/getting-text-from-uialertview

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:iphone – 从UIAlertView获取文本