gpt4 book ai didi

ios - 代表 : pass data without segue

转载 作者:行者123 更新时间:2023-11-30 11:44:32 25 4
gpt4 key购买 nike

我有两个简单的类,它们与委托(delegate)传递信息,如下所示:

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被触发。但我的问题是,如果我想重新加载 Collection View ,则 Collection View 为零,因为我在 ViewControllerBefore 类中实例化 ViewController 对象的方式。请记住,我无法在 segue 中分配委托(delegate),因为两个 View Controller 未连接。

参见下面的buttonDidPress函数:

func buttonDidPress() {         
dataCell.infoCell.insert(addDataCell.getBuyCell(), at: 0)
self.cvHome.reloadData()
}

最佳答案

我喜欢将数据存储在 dataSource 中对于这些情况。设置后,我可以从应用程序中的任何位置访问数据。

class PageDataSource {

var theData : [Any]?

static let sharedInstance = PageDataSource()
private init() {}
}

为了确保我通过 delegate 传递信息我将其存储到 dataSource我这样做:

func doDelegate() {
PageDataSource.sharedInstance.theData = whatever
passData(whatever)
dismiss(true, nil)
}

然后我确保 tableViewcollectionView正在从 PageDataSource.sharedInstance.theData 获取所需的信息例如:

// MARK: CollectionView DataSource
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if PageDataSource.sharedInstance.theData.count >= 1 {
return PageDataSource.sharedInstance.theData.count
}
return 0
}

关于ios - 代表 : pass data without segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48977044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com