Tableview.reloadData 不起作用
Posted
技术标签:
【中文标题】Tableview.reloadData 不起作用【英文标题】:Tableview.reloadData doesn't work 【发布时间】:2017-07-06 19:41:34 【问题描述】:我有两个控制器,我想在它们之间传递数据: 这是第一个控制器,一个 tableviewcontroller。
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 不起作用,你能帮帮我我会很高兴。
【问题讨论】:
您使用instantiateViewController
创建了一个新的视图控制器对象,但您不执行任何操作来显示它。您是否已经有另一个应该使用的BooksVC
?
不,我必须连接到 BooksVC 控制器,而不是创建一个新的。
【参考方案1】:
您需要引用第一个视图控制器来执行您需要的操作。 你可以这样做:
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)
当您实例化 AddController 时,您需要传递 BooksVC 的引用。像这样的:
addController.booksVC = self
【讨论】:
【参考方案2】:当你按下 doneButton 时,第二个 ViewController 好了 驳回看法 传输数据 self.parentviewController。 book.apped(inputField.text!) self.dissmissviewcontroller
比在第一个 VC 中你可以做这样的事情
in viewWillAppear func
tableview.reloadData()
【讨论】:
以上是关于Tableview.reloadData 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
tableView.reloadData() 不起作用,可能没有在主线程上调用
tableview.reloaddata() 在使用 coredata 时搜索栏取消按钮后不起作用
在AFNetworking中成功调用后self.tableView reloadData不起作用