swift - 使用防护/if 语句来设置多个 CollectionvViewCell 样式的良好做法?

标签 swift xcode uiscrollview uicollectionview

我遇到了一个困境,在我的 CollectionView 中,每个 collectionviewcell 都显示不同的数据,并且具有不同的边框/背景样式。例如,代码片段

let monsters: Monsters!


    cell.graphViewIBO.isHidden = true
    cell.monsblIBO.isHidden = true
    cell.powersBgIBO.isHidden = true


    guard indexPath.row != 0 else {

        cell.indexOne(monsters)
        return cell
    }
    guard indexPath.row != 1 else {

        cell.indexTwo(monsters)
        return cell
    }
    guard indexPath.row != 2 else {

        cell.indexThree(monsters)
        return cell
    }

我觉得这可能是不好的做法,并且不确定我是否应该继续这样做,或者只是使用 scrollview 并独立设置其中每个 uiview 的样式。 因为从右边开始,我的 Storyboard在一个 collectionviewcell 中包含多个对象,我需要根据所呈现的索引来隐藏/显示这些对象。我可以继续使用 CollectionView 来实现此目的吗?这种方法的正确方法是什么?

最佳答案

我认为您想要使用的是 switch 语句。您的代码如下所示:

let monsters: Monsters!

cell.graphViewIBO.isHidden = true
cell.monsblIBO.isHidden = true
cell.powersBgIBO.isHidden = true

switch indexPath.row {
case 0:
    cell.indexOne(monsters)
case 1:
    cell.indexTwo(monsters)
case 2:
    cell.indexThree(monsters)
default: break
}

return cell

如果您经常更改单元格,则可以创建 UICollectionViewCell 的不同子类,具体创建取决于哪个索引。如果每种类型的单元格只使用一次,那么 UIScrollView 会更好。但是,如果您多次使用相同类型的单元格(例如仅更改一些文本),则应该使用 UICollectionView。

关于swift - 使用防护/if 语句来设置多个 CollectionvViewCell 样式的良好做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41653982/

相关文章:

ios - UIButton 在 collectionView 单元格中不起作用

ios - 如何实现水平滚动/分页 View Controller ?

iphone - 如何检测 View 中任意位置的点击?

XCode Storyboard: how to create a segue when the segue trigger is not on storyboard

Xcode 编译 swift 代码太慢,因为它编译了两次

ios - 以编程方式向 Swift 3 中的 ScrollView 添加约束

ios - iPad Mini 未获取 UIImage 值

iOS 7 - 布局建议

swift - 如何使用按钮在 ScrollView Controller 中强制输入 "scroll"?

swift - 使用 MVVM 使用 RxSwift 查看初始数据源和过滤