将 UITextField(来自 UIAlertController)插入 NSMutableArray

Posted

技术标签:

【中文标题】将 UITextField(来自 UIAlertController)插入 NSMutableArray【英文标题】:insert UITextField (from a UIAlertController) into an NSMutableArray 【发布时间】:2016-02-18 21:13:29 【问题描述】:

您好,我想将从警报 txtfield 获得的用户输入插入到可变数组中。

所以,我有一个带有按钮的 tableView 来添加额外的行。当按下按钮时,用户可以输入消息。

我想将该消息插入到我的数组中。

我打算使用方法 clickedButtonAtIndex 但 Xcode 声明该方法现在已弃用。

还有其他方法可以做到这一点吗??

这是我的数组的代码:

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

self.exampleMessages = [[NSMutableArray alloc]initWithObjects:@"Example Message..", @"Example Message..",@"Example Message..",@"Example Message..",@"Example Message..", @"Example Message..",@"Example Message..",@"Example Message..", nil];

这是我按下添加行按钮后执行的函数:

- (void)insertNewObject
//function that is executed after a new object is inserted

    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@""
                                message:nil
                                preferredStyle:UIAlertControllerStyleAlert];
    //create a UIAlert named alert

    [alert addTextFieldWithConfigurationHandler:^(UITextField *messageTextField) 
         messageTextField.placeholder = NSLocalizedString(@"message content", @"Message");
    ];
    //add a UITextField to the UIAlert

    UIAlertAction *messageAction = [UIAlertAction
                                    actionWithTitle:NSLocalizedString(@"Add", @"Message action")
                                    style:UIAlertActionStyleDefault
                                    handler:^(UIAlertAction * action) 
                                        UITextField *userMessage = alert.textFields.firstObject;
                                        NSLog(@"%@", userMessage);
                                        //capture the value of the UITextField
                                    ];
    //add a button called "add"

    UIAlertAction *cancelAction = [UIAlertAction
                                   actionWithTitle:NSLocalizedString(@"Cancel", @"Cancel action")
                                   style:UIAlertActionStyleCancel
                                   handler:^(UIAlertAction *action) ];
    //add a button called "cancel"

    [alert addAction:messageAction];
    //add the add button to the alert
    [alert addAction:cancelAction];
    //add the cancel button to the alert
    [self presentViewController:alert animated:YES completion:nil];
    //present the alert to the UI

在此处的代码中,我正在捕获值并将其存储在变量中,但现在如何将其放入数组中?

 UITextField *userMessage = alert.textFields.firstObject;
                                    NSLog(@"%@", userMessage);
                                    //capture the value of the UITextField

【问题讨论】:

【参考方案1】:

替换评论

//capture the value of the UITextField

下面一行:

[self.exampleMessages addObject:userMessage.text ?: @""];

看起来之后您需要通过[self.tableView reloadData] 或类似的调用来更新表格视图。

【讨论】:

hhmmm 我知道它是如何工作的,但是当我将它添加到我的代码中时,什么也没发生。该消息未添加到我的数组中。我是否需要更新我的阵列?像在添加消息之后? 我刚刚编辑了我的答案。如果这没有帮助,我建议在将文本添加到数组后立即检查 self.exampleMessages 属性值。 F.e.添加NSLog(@"%@", self.exampleMessages) 并查看日志。 我在您更新评论之前看到了您的评论,重新加载表格视图有效!

以上是关于将 UITextField(来自 UIAlertController)插入 NSMutableArray的主要内容,如果未能解决你的问题,请参考以下文章

将 UITextField 中的文本用于 fetchRequest 谓词

来自 rightView 的 UITextField 参考

如何在 UITextField 子类中拦截来自键盘的文本输入事件

来自 UITableView 中的静态 UITableViewCell 的 UITextField 值未显示

为啥来自 customTableViewCell 的 UiTextField 没有在我的 UiViewController 中使用 UITableView 返回字符串

如何在没有按钮的情况下在 UITextField 中显示来自 UIDataPicker 的值