Swift:具有动态和静态单元格的 UICollectionView
Swift: UICollectionView with dynamic and static cell
我从一个数组中创建了一些 collectionviewcell。我想要的是位于所有这些单元格末尾的静态单元格。
所以不管我添加了多少个单元格,这个特定的单元格都停留在最后
此外,如果无法做到这一点,您有什么想法可以完成我正在尝试的事情
非常感谢。我非常感谢您提供的任何答案
是的,这绝对是可能的。我的首选方法是在集合视图中使用两个单独的部分:
func numberOfSections() -> Int {
return 2
}
func numberOfItemsInSection(_ section: Int) -> Int {
if section == 0 {
return array.count
} else if section == 1 {
return 1
} else {
return 0
}
}
func cellForItemAtIndexPath(_ indexPath: NSIndexPath) -> UICollectionViewCell? {
if indexPath.section == 0 {
// set up the standard cell, using the data from the army
} else if indexPath.section == 1 {
//set up the "+" cell
}
}
实现相同目标的另一种方法是只使用一个部分,将集合视图的大小声明为数组大小 + 1,然后在cellForItemAtIndexPath 方法,但你会发现它会导致额外的数学运算变得更加复杂。如果可能的话,让单元格在不同的部分使用不同的数据通常更安全
是的,这绝对有可能。
在 func collectionView(_ collectionView: UICollectionView,
numberOfItemsInSection section: Int) -> Int
中,您应该总是 return 比您拥有的物品数量多 1。
在 func collectionView(_ collectionView: UICollectionView,
cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
中,您应该检查 indexPath.row 是否等于您拥有的项目数。如果是,请将该特定单元格配置为具有 + 号。
以下常见错误
请确保您不会为最后一个单元格调用访问用于标记的同一数组。
例如,如果您的标签数组如下所示:
var myItems = ["Tag1", "Tag2", "Tag3"]
那么下面的代码是错误的:
var titleToDisplayOnCell = myItems[indexPath.row] // Don't do this!
这是因为对于应该显示 + 号的单元格,行是 3 并且 myItems[3] 没有对象 -- 这超出了数组的范围,数组范围是 0 到 2(含)。
我从一个数组中创建了一些 collectionviewcell。我想要的是位于所有这些单元格末尾的静态单元格。
所以不管我添加了多少个单元格,这个特定的单元格都停留在最后
此外,如果无法做到这一点,您有什么想法可以完成我正在尝试的事情
非常感谢。我非常感谢您提供的任何答案
是的,这绝对是可能的。我的首选方法是在集合视图中使用两个单独的部分:
func numberOfSections() -> Int {
return 2
}
func numberOfItemsInSection(_ section: Int) -> Int {
if section == 0 {
return array.count
} else if section == 1 {
return 1
} else {
return 0
}
}
func cellForItemAtIndexPath(_ indexPath: NSIndexPath) -> UICollectionViewCell? {
if indexPath.section == 0 {
// set up the standard cell, using the data from the army
} else if indexPath.section == 1 {
//set up the "+" cell
}
}
实现相同目标的另一种方法是只使用一个部分,将集合视图的大小声明为数组大小 + 1,然后在cellForItemAtIndexPath 方法,但你会发现它会导致额外的数学运算变得更加复杂。如果可能的话,让单元格在不同的部分使用不同的数据通常更安全
是的,这绝对有可能。
在 func collectionView(_ collectionView: UICollectionView,
numberOfItemsInSection section: Int) -> Int
中,您应该总是 return 比您拥有的物品数量多 1。
在 func collectionView(_ collectionView: UICollectionView,
cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
中,您应该检查 indexPath.row 是否等于您拥有的项目数。如果是,请将该特定单元格配置为具有 + 号。
以下常见错误
请确保您不会为最后一个单元格调用访问用于标记的同一数组。
例如,如果您的标签数组如下所示:
var myItems = ["Tag1", "Tag2", "Tag3"]
那么下面的代码是错误的:
var titleToDisplayOnCell = myItems[indexPath.row] // Don't do this!
这是因为对于应该显示 + 号的单元格,行是 3 并且 myItems[3] 没有对象 -- 这超出了数组的范围,数组范围是 0 到 2(含)。