Ios UIAlert,带文本字段至表格

Ios UIAlert,带文本字段至表格,ios,uitableview,swift,ios8,Ios,Uitableview,Swift,Ios8,我的目标是在主视图中的表中创建一个新行,标题为使用存储在namePrompt中的UIAlert输入。我将如何实现这一点 目前,当我试图换一行时(使用iPad模拟器右上角的+按钮,运行iOS 8),应用程序会崩溃。我真的不确定我做错了什么,任何帮助都是感激的 代码: 我认为问题是由let childName:Any Object行和/或objects.insertObject行引起的 --编辑-- 当我构建/运行项目时,代码中没有错误,但是当我尝试添加新行时,只要我按下+按钮,我就会从线程1获得0

我的目标是在主视图中的表中创建一个新行,标题为使用存储在
namePrompt
中的UIAlert输入。我将如何实现这一点

目前,当我试图换一行时(使用iPad模拟器右上角的
+
按钮,运行iOS 8),应用程序会崩溃。我真的不确定我做错了什么,任何帮助都是感激的

代码:

我认为问题是由
let childName:Any Object
行和/或
objects.insertObject
行引起的

--编辑--

当我构建/运行项目时,代码中没有错误,但是当我尝试添加新行时,只要我按下
+
按钮,我就会从
线程1
获得
0x1fbaff4:nopw%cs:(%eax,%eax)
。这与行
let object=objects[indexPath.row]as NSDate
(在下面的代码片段中)相关(上面的
objects.insertObject
行的默认值是NSDate)。我将
NSDate
更改为
NSString
,同样的事情发生了

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell

    let object = objects[indexPath.row] as NSString
    cell.textLabel?.text = object.description
    return cell
}

您似乎假设UIAlertController的文本字段将在警报出现后立即填充。这并没有给用户任何时间来实际填写字段

let childName=namepropt.textFields![0]
在一个按钮操作中单击一行(及以下),然后等待用户点击该按钮,然后再读取文本字段

--编辑--

这是我建议修改的代码。我对您的代码做了尽可能少的更改。注意,有一个if语句来防止空的子名称,但它不会防止有人进入一堆空格。您可能应该使该部分更坚固

func insertNewObject(sender: AnyObject) {
    //prompt for kid name
    var namePrompt = UIAlertController(title: "Add Child", message: "Please enter child name", preferredStyle: UIAlertControllerStyle.Alert)
    namePrompt.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil))
    namePrompt.addAction(UIAlertAction(title: "Add Child", style: UIAlertActionStyle.Default, handler: { (alertAction) in
        let childName = (namePrompt.textFields![0] as UITextField).text as String
        if childName != "" {
            self.objects.insert(childName, atIndex: 0)
            let indexPath = NSIndexPath(forRow: 0, inSection: 0)
            self.tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
        }
    }))
    namePrompt.addTextFieldWithConfigurationHandler({(textField: UITextField!) in
        textField.placeholder = "Johnny"
    })
    self.presentViewController(namePrompt, animated: true, completion: nil)

}

使用有关崩溃的详细信息更新您的问题,包括完整的错误消息,并指出导致崩溃的行。在
addAction
handler
点中,对于“addchild”,这是有意义的。在用户点击添加子对象按钮之前,您可能不想读取该值,对吗?我用上述代码替换了
insertNewObject
函数(谢谢),UIAlert正确打开,但当我按
add child
时,UIAlert消失,键盘保持显示,并且没有添加新行。知道为什么吗?它还给了我线程1调试器中的
0x2052ff4:nopw%cs:(%eax,%eax)
(或者我假设的调试器?)问题是textFields[0]不是字符串,而是UITextField。你必须深入挖掘才能找到真正的文本。我将编辑以上答案。
func insertNewObject(sender: AnyObject) {
    //prompt for kid name
    var namePrompt = UIAlertController(title: "Add Child", message: "Please enter child name", preferredStyle: UIAlertControllerStyle.Alert)
    namePrompt.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil))
    namePrompt.addAction(UIAlertAction(title: "Add Child", style: UIAlertActionStyle.Default, handler: { (alertAction) in
        let childName = (namePrompt.textFields![0] as UITextField).text as String
        if childName != "" {
            self.objects.insert(childName, atIndex: 0)
            let indexPath = NSIndexPath(forRow: 0, inSection: 0)
            self.tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
        }
    }))
    namePrompt.addTextFieldWithConfigurationHandler({(textField: UITextField!) in
        textField.placeholder = "Johnny"
    })
    self.presentViewController(namePrompt, animated: true, completion: nil)

}