【发布时间】:2018-02-26 07:20:36
【问题描述】:
我有两个简单的类通过委托传递信息,如下所示:
protocol VCBDelegate: class {
func buttonDidPress() }
class ViewControllerBefore: UIViewController {
weak var delegate: VCBDelegate?
let vc = ViewController()
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = vc
}
@IBAction func press(_ sender: Any) {
delegate?.buttonDidPress()
} }
class ViewController: UIViewController, VCBDelegate {
override func viewDidLoad() {
super.viewDidLoad()
}
一切正常,并且触发了 buttonDidPress 函数。 但我的问题是,如果我想重新加载集合视图,那么集合视图为零,因为我在 ViewControllerBefore 类中实例化 ViewController 对象的方式。 请记住,我不能在 segue 中分配委托,因为两个视图控制器没有连接。
请看下面的 buttonDidPress 函数:
func buttonDidPress() {
dataCell.infoCell.insert(addDataCell.getBuyCell(), at: 0)
self.cvHome.reloadData()
}
【问题讨论】:
-
是的,它们是相连的,因为它们都在同一个视图层次结构中(或者至少它们应该是)。
let vc = ViewController()肯定是错误的做事方式。两个控制器如何相互关联,它们的工作是什么,它们是同一个父级的子级,一个是另一个的父级/容器吗? -
上面那个是我的app的简化版,但基本上有一个Tab Bar Controller --> Navigation Controller --> View Controller。
-
然后从标签栏控制器 --> 另一个视图控制器 --> 用标识符实例化之前的视图控制器