2017-07-06 25 views
-1

我有兩個控制器,我想在它們之間傳遞數據: 這是第一個控制器,一個tableviewcontroller。Tableview.reloadData不起作用

class BooksVC: UITableViewController { 

var books: [String] = [] 


override func viewDidLoad() { 
    super.viewDidLoad() 

    navigationItem.title = "Books" 

} 

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return books.count 
} 
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) 

    cell.textLabel?.text = books[indexPath.row] 

    return cell 
} 
} 

這是第二個控制器,視圖 - 控制

class AddController: UIViewController { 
@IBOutlet weak var inputField: UITextField! 

override func viewDidLoad() { 
    super.viewDidLoad() 

} 

@IBAction func done(_ sender: Any) { 
    let myVC = storyboard?.instantiateViewController(withIdentifier: "BooksVC") as! BooksVC 
    myVC.books.append(inputField.text!) 
    myVC.tableView.reloadData() 

    dismiss(animated: true, completion: nil) 
} 

}

Reloaddata不工作,你能幫助我,我將非常高興。

+0

您創建'instantiateViewController'一個新的視圖控制器對象,但你不做任何事情來展示它。你已經有了一個你應該使用的不同的'BooksVC'? –

+0

不,我必須連接到BooksVC控制器,而不是創建一個新的。 – Adi

回答

0

您需要參考第一個視圖控制器來執行您所需的操作。 你可以做這樣的事情:

class AddController: UIViewController { 
.... 
weak var booksVC: BooksVC? 

@IBAction func done(_ sender: Any) { 
    booksVC.books.append(inputField.text!) 
    booksVC.tableView.reloadData() 

    dismiss(animated: true, completion: nil) 
} 

} 

而當你instatiate的AddController,你需要通過你的BooksVC的參考。事情是這樣的:

addController.booksVC = self 
0

不行了第二視圖控制器,當按下doneButton你可以
dissmisstheview trasffer數據 self.parentviewController。 books.apped(inputField.text!) self.dissmissviewcontroller

比第一個VC,你可以做這樣的事情

in viewWillAppear func{ 
tableview.reloadData() 
}