iOS中SKU功能实现
2018-03-28 本文已影响8人
xxxxxxxxx_ios
demo.gif
示例json在桥接文件中。
主要思路:
- 1 展示数据处理
"tags":[
{
"name":"长*宽*厚",
"child":[
"920mm*128mm*11mm",
"920mm*128mm*15mm",
"920mm*128mm*10mm"
]
},
{
"name":"木皮厚度",
"child":[
"1.3mm",
"1.4mm",
"1.5mm",
"1.2mm"
]
}
]
这部分数据主要用于标签展示:
对应GoodsTags
模型
import UIKit
class GoodsTags: NSObject {
var name: String = "" // 区头名
var child = [GoodsTagsChild]() // 标签模型数组
}
注: GoodsTagsChild
为标签模型,记录点击状态
import UIKit
class GoodsTagsChild: NSObject { // 对应一个个item 标题和状态
var childStr = ""
var isSelected = false // 选中状态
var isCanClick = false // 可点状态
}
具体处理方式参考GoodsStandardsController
中的 func setupItemModel()
.
- 2 返回数据组合状态数据处理
"tagsInfo":[
{
"classTag2":"1.3mm",
"classTag1":"920mm*128mm*11mm",
"tagsId":57,
"tagsName":"920mm*128mm*11mm1.3mm",
"price":"130.00"
},
{
"classTag2":"1.4mm",
"classTag1":"920mm*128mm*11mm",
"tagsId":58,
"tagsName":"920mm*128mm*11mm1.4mm",
"price":"121.10"
},
{
"classTag2":"1.5mm",
"classTag1":"920mm*128mm*11mm",
"tagsId":59,
"tagsName":"920mm*128mm*11mm1.5mm",
"price":"155.50"
},
{
"classTag2":"1.2mm",
"classTag1":"920mm*128mm*15mm",
"tagsId":1000482,
"tagsName":"920mm*128mm*15mm1.2mm",
"price":"179.00"
},
{
"classTag2":"1.3mm",
"classTag1":"920mm*128mm*10mm",
"tagsId":1001029,
"tagsName":"920mm*128mm*10mm1.3mm",
"price":"130.00"
},
{
"classTag2":"1.4mm",
"classTag1":"920mm*128mm*10mm",
"tagsId":1001030,
"tagsName":"920mm*128mm*10mm1.4mm",
"price":"121.10"
},
{
"classTag2":"1.5mm",
"classTag1":"920mm*128mm*15mm",
"tagsId":1001031,
"tagsName":"920mm*128mm*15mm1.5mm",
"price":"155.50"
},
{
"classTag2":"1.3mm",
"classTag1":"920mm*128mm*15mm",
"tagsId":1001032,
"tagsName":"920mm*128mm*15mm1.3mm",
"price":"120.00"
}
]
通过GoodsStandardsController
中的 func setupGoodsClassTag()
将其处理为两个数组。
数组结构为(此处的 长宽厚和木皮厚度分别对应上述classTag1,classTag2对应的两种商品属性)
["长*宽*厚" : [ "木皮厚度1","木皮厚度2","木皮厚度3"]]
和
["木皮厚度" : [ "长*宽*厚1","长*宽*厚2","长*宽*厚3"]]
然后在UICollection item点击事件中处理item状态,详见demo,代码粗糙,见谅。
Demo