我正在使用tabman作为布局的标签。在我的情况下,有4个标签,每个标签包含2到3个图像。我在UICollectionView
显示图片。
我的JSON:
"PhotoList": [
{
"ID": 0,
"DaySeq": 1,
"ImgPath": "Images\\1.jpg"
},
{
"ID": 0,
"DaySeq": 1,
"ImgPath": "Images\\2.jpg"
},
{
"ID": 0,
"DaySeq": 2,
"ImgPath": "Images\\3.jpg"
},
{
"ID": 0,
"DaySeq": 2,
"ImgPath": "Images\\4.jpg"
},
{
"ID": 0,
"DaySeq": 3,
"ImgPath": "Images\\.jpg"
},
{
"ID": 0,
"DaySeq": 4,
"ImgPath": "Images\\6.jpg"
},
{
"ID": 0,
"DaySeq": 5,
"ImgPath": "Images\\7.jpg"
}
]
我想在标签1中有一个UICollectionView
,我想只显示那些有'DaySeq'1的图像。就像在其他标签中一样,我希望图像带有'DaySeq'2。
我在代码中尝试的是什么:
override func viewDidLoad() {
super.viewDidLoad()
Alamofire.request("http://bestapp.in/api/Package/GetItineraryByPackageID/2").responseJSON(completionHandler: { (responseData) in
if ((responseData.result.value) != nil) {
let swiftyJSONVar = JSON(responseData.result.value!)
if let resData = swiftyJSONVar["DayDescrList"].arrayObject,
let resImg = swiftyJSONVar["PhotoList"].arrayObject
{
self.arrRes = resData as! [[String:AnyObject]]
self.arrImg = resImg as! [[String:AnyObject]]
self.dataSource = self
self.bar.location = .top
}
}
})
}
func viewControllers(forPageboyViewController pageboyViewController: PageboyViewController) -> [UIViewController]? {
let storyboard = UIStoryboard(name:"Main",bundle:Bundle.main)
var viewControllers = [UIViewController] ()
var tabBarItems : [TabmanBar.Item] = []
for j in 0 ..< self.arrImg.count {
for var k in 0 ..< j {
k += 1
if k == self.arrImg[j]["DaySeq"] as! Int {
let vc = storyboard.instantiateViewController(withIdentifier: "childvc") as! childvc
vc.imgURL = self.arrImg[j]["ImgPath"] as! String
print(self.arrImg[j]["ImgPath"] as! String)
self.array.append(self.arrImg[j]["ImgPath"] as! String)
}
print(array)
}
}
print(array)
let vc = storyboard.instantiateViewController(withIdentifier: "childvc") as! childvc
vc.array = array
self.bar.items = tabBarItems
return viewControllers
}
答案 0 :(得分:1)
创建模型示例:
class ImagesModel {
var id: Int?
var path: String?
var daySeq: Int?
func parseWith(json: JSON){
self.id = json["ID"].intValue
self.path = json["ImgPath"].intValue
self.daySeq = json["DaySeq"].intValue
}
}
在您的班级中创建ImagesModel数组:
var imagesModelArray = [ImagesModel]()
只需将数组解析为此模型示例:
let photosListArray = json["PhotoList"].arrayValue
for objects in photosListArray{
let model = ImagesModel()
model.parseWith(json: objects)
self.imagesModelArray.append(model)
}
之后在集合View numberOfItems方法中,你需要根据那个标签对数据进行排序。
func collectionView(_ collectionView: UICollectionView,
numberOfItemsInSection section: Int) -> Int {
if tab == 0{
return self.imagesModelArray.filter({$0.daySeq == 0})
}else if tab == 1{
return self.imagesModelArray.filter({$0.daySeq == 1})
}
///MORE CONDITIONS
//At the End
return 0
}
之后在cellForItem中生成这些类型的过滤数组,并从这些过滤后的数组中获取图像。
享受斯威夫特。
也许它有帮助。如有任何疑问请发表评论