2017-07-08 19 views
1

私はtodolistアプリを迅速に作成しています。私はalertControllerを使用しますが、「+」をクリックし、追加したときに、私は新しいのViewControllerの開口部を使用して、今それを変更し、TODOを作成するためにswift 3 ViewControllerのtextFieldを使用してTableViewControllerに行を追加します

enter image description here

これまでのところ:ここでは、それは次のようになります。 ViewControllerが開くと、タイトルを入力してボタンをクリックします。クリックボタンで、tableControllerの新しい行をviewControllerのtextFieldに置いたタイトルで追加したいと思います。 tableViewControllerで作成された新しい行にtextFieldの値を渡すのに問題があります。 誰でも助けてもらえますか?

ここで[EDIT] は私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"

答えて

0

あなたは合格する方法が必要ですテーブルビューを含むビューコントローラにデータを戻す。これは、デリゲートパターンを使用するなど、さまざまな方法で実現できます。

このように、クロージャを使用していることを達成するための1つの簡単な方法:あなたの閉鎖となりますupdateTableViewClosureと呼ばれる新しい変数を追加AddItemViewController

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. 
     } 
    } 
} 

:テーブルビューを含むビューコントローラで

var updateTableViewClosure: (String -> Void)? 

、あなたはこのように好きな場所にそれを呼び出す:

updateTableViewClosure?("The new item") 

希望すると便利です。

+0

お返事ありがとうございます!しかし、私はtextField値が取得し、TableViewControllerの新しい行を追加する方法を理解していないのですか? – Nil

+0

例えば、ボタンを追加して、そのボタンの 'IBAction'にtextfeildからテキストを取得し、' updateTableViewClosure'を呼び出すことで可能です。 また、ビューコントローラをテキストフィールドのデリゲートとして設定し、 'textFieldShouldReturn'デリゲートメソッドを実装することもできます。 –

+0

これは実際に私が問題を抱えている、tableViewControllerのtextFieldのviewControllerのテキストにアクセスする方法ですか? – Nil

関連する問題