【发布时间】:2017-06-28 09:06:57
【问题描述】:
我正在尝试创建一个委托函数以在事件的不同视图控制器中重新加载集合视图。
为此我定义了一个协议,在类中设置委托,以及一个简单的委托函数。
protocol ReloadCollectionDelegate: class {
func reloadCollectionViewFromDelegate()
}
class JourneyViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UITabBarControllerDelegate, UIScrollViewDelegate, ReloadCollectionDelegate {
// delegate function from downloadCollectionController to relaod collection
func reloadCollectionViewFromDelegate() {
// simply call the reload function
reloadCollection()
}
在我的班级中将调用上述函数:
// define the delegate for use
weak var reloadJourneyDelegate: ReloadCollectionDelegate?
// reload the collection view in JourneyViewController
let JVC = self.viewController.storyboard!.instantiateViewController(withIdentifier: "JourneyViewController") as! JourneyViewController
self.reloadJourneyDelegate = JVC
self.reloadJourneyDelegate?.reloadCollectionViewFromDelegate()
打印(JVC):
JourneyViewController: 0x7fc7f7c55bf0
print(self) - 来自 JourneyViewController (viewDidLoad):
JourneyViewController: 0x7fc7f7e2db10
所以我得到了同一个视图控制器的不同实例。
我如何定义它以便我拥有正确的实例并可以修改 UI?
谢谢
【问题讨论】:
-
你在哪里调用viewDidLoad?
-
在 JourneyViewController 类的 viewDidload() 中打印自己
标签: ios swift uiviewcontroller delegates protocols