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

问题描述:

我在swift中制作todolist应用程序。这里是什么样子:swift 3使用ViewController中的textField向TableViewController添加行

enter image description here

到目前为止创建待办事项我用了一个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") 
    } 
} 

我得到一个错误:

" Use of unresolved "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") 

希望这有助于!

+0

嘿谢谢你的回答!但我不明白textField值将如何获取并添加到TableViewController新行中? – Nil

+0

你可以通过添加一个按钮来实现,例如在按钮的IBAction中,从textfeild中获取文本并调用updateTableViewClosure。 您也可以通过将视图控制器设置为文本框的委托并实现'textFieldShouldReturn'委托方法来实现。 –

+0

这实际上是我遇到麻烦,如何访问我的textField在tableViewController中的viewController的文本? – Nil