Arrays 如何在Swift中与视图控制器类中的集合视图委托共享数据
我对CollectionView的协议函数如何在ViewController类中运行遇到了一些问题。我的问题是我有一个ID为的类,它返回字符串类型Arrays 如何在Swift中与视图控制器类中的集合视图委托共享数据,arrays,swift,oop,uiviewcontroller,uicollectionview,Arrays,Swift,Oop,Uiviewcontroller,Uicollectionview,我对CollectionView的协议函数如何在ViewController类中运行遇到了一些问题。我的问题是我有一个ID为的类,它返回字符串类型 public class GroupIds { var groupIds = [String]() func setId(groups: [String]) { groupIds=groups } func getIds() -> [String] { return groupIds } 我有一个创建GroupId对象的静态变量
public class GroupIds {
var groupIds = [String]()
func setId(groups: [String])
{
groupIds=groups
}
func getIds() -> [String]
{
return groupIds
}
我有一个创建GroupId对象的静态变量
static var GI = GroupIds()
我有一个公共类,我可以从ViewController访问它来设置ID。在我的ViewController中的函数中,我创建并设置它们,如下所示:
func setId()
{
GroupViewController.GI = GroupIds()
GroupViewController.GI.setId(groups: self.getGroupIds(groups: groups))
}
在另一个函数中,我访问这些ID并得到正确的响应。我是这样做的:
@IBAction func testButton(_ sender: UIButton) {
print(GroupViewController.GI.getIds())
}
然而,我的问题是,当我想在CollectionView委托中使用ID时,数据总是为零。这是我的尝试:
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
print(GroupViewController.GI.getIds())
return GroupViewController.GI.getIds().count
}
当我的集合视图加载并调用此函数时,它将打印一个空数组并返回0。
我的问题是如何使numberOfItemsInSection函数的行为类似于testButton,并查看存储在公共类GroupId中的值。何时在主视图控制器中调用
setId()
?在我看来,您的数据源是在调用setId()
方法之前设置的
在setId()
func setId() {
GroupViewController.GI = GroupIds()
GroupViewController.GI.setId(groups: self.getGroupIds(groups: groups))
collectionView.reloadData()
}