swift 3使用ViewController中的textField向TableViewController添加行
问题描述:
我在swift中制作todolist应用程序。这里是什么样子:swift 3使用ViewController中的textField向TableViewController添加行
到目前为止创建待办事项我用了一个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")
希望这有助于!
嘿谢谢你的回答!但我不明白textField值将如何获取并添加到TableViewController新行中? – Nil
你可以通过添加一个按钮来实现,例如在按钮的IBAction中,从textfeild中获取文本并调用updateTableViewClosure。 您也可以通过将视图控制器设置为文本框的委托并实现'textFieldShouldReturn'委托方法来实现。 –
这实际上是我遇到麻烦,如何访问我的textField在tableViewController中的viewController的文本? – Nil