我有一个待办事项列表,允许用户将待办事项添加到表格视图中。在单独的视图控制器(CompletedViewController
)上,用户可以看到以前完成的待办事项。
itemBarButton
中有一个CompletedViewController
应该允许用户清除已完成项目的列表,并清除最初的待办事项(completedThings
)数组ViewController
。
创建CompletedViewController
的实例并在ViewController.swift
中设置completedTodos数组:
@IBAction func viewCompletedTapped(_ sender: Any) {
if let vc = storyboard?.instantiateViewController(withIdentifier: "Completed") as? CompletedViewController {
vc.completedTodos = completedThings
navigationController?.pushViewController(vc, animated: true)
}
}
CompletedViewController.swift
中的协议:
protocol CompletedCleared {
func didClearCompleted()
}
点击itemBarButton
CompletedViewController.swift
时调用的方法
@objc func clearCompleted() {
completedTodos = []
tableView.reloadData()
let vc = ViewController()
vc.didClearCompleted()
}
符合ViewController.swift
func didClearCompleted() {
completedThings.removeAll()
}
这不会清除上一个视图控制器上的列表。我做错了什么?
答案 0 :(得分:0)
您忘记设置CompletedViewController
的委托。在viewCompletedTapped
中,在实例化视图控制器后添加此行:
vc.delegate = self
还要确保在CompletedViewController
中使用此委托方法。 clearCompleted
应该看起来像这样:
@objc func clearCompleted() {
completedTodos = []
tableView.reloadData()
delegate?.didClearCompleted()
}