swift 3 使用 ViewController 中的 textField 向 TableViewController 添加行

我正在快速制作一个 todolist 应用程序。这是它的样子:

在此处输入图片说明

到目前为止,为了创建一个todo,我使用了一个alertController,但我改变了它,现在当点击“+”添加时使用一个新的视图控制器打开。当 ViewController 打开时,我填写标题,然后单击一个按钮。在单击按钮上,我希望它在 tableViewController 中添加一个新行,标题是我放在 viewController 的 textField 中。我无法在 tableViewController 中创建的新行中传递 textField 的值。任何人都可以提供一些帮助吗?

[编辑] 这是我的 addTodoController :

var updateTableViewClosure: ((String) -> Void)?

    @IBAction func AddButton(_ sender: Any) {
        var todoValue = titleField.text
        updateTableViewClosure?(todoValue!)
    }

    @IBOutlet weak var titleField: UITextField!

这是我的 tableviewcontroller :

if segue.identifier == "CreateAdd" {

    let addItemViewController = segue.destination as! CreateAdd
    addItemViewController.updateTableViewClosure = {
        newItem in myItems(title: todoValue, content:"hello", ontent: "Ceci est le contenu" , startDate: "16/08/1997", author: "Clem")
    }
}

我收到一个错误:

" 使用未解决的 "todoValue"

莫阿卜杜勒-哈米德

您需要一种将数据传递回包含表视图的视图控制器的方法。这可以通过多种方式实现,例如使用委托模式。

实现这一点的一种更简单的方法是使用闭包,如下所示:

在包含表视图的视图控制器中:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "identifier" {

        let addItemViewController = segue.destination as! AddItemViewController
        addItemViewController.updateTableViewClosure = {
            newItem in

            // Add the new item to your data source and reload your table view.
        }
    }
}

AddItemViewController添加一个名为新的变量updateTableViewClosure,这将是你的闭合:

var updateTableViewClosure: (String -> Void)?

并在任何你想要的地方调用它:

updateTableViewClosure?("The new item")

希望这可以帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章