我正在尝试创建一个委托函数,以便在事件的不同视图控制器中重新加载集合视图。
为此,我定义了一个协议,在类中设置了委托,并定义了一个简单的委托函数。
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
打印(自我)-从JourneyViewController (viewDidLoad):
JourneyViewController: 0x7fc7f7e2db10
所以我得到了同一个视图控制器的不同实例。
我如何定义它,这样我才能拥有正确的实例并可以修改UI?
谢谢
发布于 2017-02-10 06:03:13
此行创建一个新的JourneyViewController
实例
self.viewController.storyboard!.instantiateViewController(withIdentifier: "JourneyViewController") as! JourneyViewController
您必须找到一种方法来引用JourneyViewController的原始实例。通过拥有指向它的属性,或者如果两个视图控制器都在一个层次结构中,使得JourneyViewController
是另一个视图控制器的父级:
class ViewControllerA: UIViewController {
override viewDidLoad() {
let button = UIButton(frame: CGRect(x: self.view.bounds.width/2, y: 400, width: 50, height: 50))
button.backgroundColor = UIColor.black
button.addTarget(self, action: #selector(buttonPressed), for: .touchUpInside)
self.view.addSubview(button)
}
func buttonPressed() {
let journey = self.parent as! JourneyViewController
journey.reloadCollection()
}
}
发布于 2019-07-30 01:37:32
这对我来说是可行的,因为上面的答案没有:
let JCV = UIStoryboard(name: "Main", bundle: nil)
.instantiateViewControllerWithIdentifier("JourneyViewController") as! JourneyViewController
导入部分是您必须在身份检查器中添加情节提要ID。
https://stackoverflow.com/questions/42152237
复制相似问题