我在一个控制器中使用swift开发一个应用程序我正在使用集合视图和表view.collection视图,它保存在控制器的顶部,水平滚动并包含近10个单元格,表视图只保留在集合下方view.i已经将json(api)数据传递给集合和表视图现在我必须调用另一个json数据(另一个api),这是第一个json数据之前的子类别,然后如果我tapp收集视图的单元格它应该调用第二个api并重新加载表视图以显示第二个api数据......如何执行此任务??
func jsonParsingFromURL () {
Alamofire.request(.POST, "http://something.com", parameters: nil, encoding: .URL, headers: nil).response { (req, res, data, error) -> Void in
// print(res)
// print(data)
let dataString = NSString(data: data!, encoding:NSUTF8StringEncoding)
print(dataString)
self.startParsing(data!)
self.collecStartParsing(data!)
}
}
func startParsing(data :NSData)
{
let dict: NSDictionary!=(try! NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers)) as! NSDictionary
for i in 0 ..< (dict.valueForKey("subcategory") as! NSArray).count
{
arrDict.addObject((dict.valueForKey("subcategory") as! NSArray) .objectAtIndex(i))
}
SecondTableView.reloadData()
}
func collecStartParsing(data :NSData){
let dict: NSDictionary!=(try! NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers)) as! NSDictionary
for i in 0 ..< (dict.valueForKey("subcategory_icons") as! NSArray).count
{
collectionitems.addObject((dict.valueForKey("subcategory_icons") as! NSArray) .objectAtIndex(i))
}
FirstCollectionView.reloadData()
}
我的表和集合视图的数据源方法:
func tableview cell for row at indexpath {
let cell = tableView.dequeueReusableCellWithIdentifier("SegueCell") as! SecondTableViewCell
let strTitle:NSString = arrDict[indexPath.row] .valueForKey("adtitle") as! NSString
cell.TitleLabel.text = strTitle as String
return cell
集合视图:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("FirstCollectionView", forIndexPath: indexPath) as! FirstCollectionViewCell
let strTitle:NSString = collectionitems[indexPath.item] .valueForKey("subcategoryname") as! NSString
cell.TitleLabel.text = strTitle as String
return cell
它有助于调用第一个api并传递数据。现在我有另一个api,因为我已经编写了不同的函数:
func jsonParsingForIcon () {
Alamofire.request(.POST, "http://www.mysecondapi.com", nil, encoding: .URL, headers: nil).response { (req, res, data, error) -> Void in
// print(res)
// print(data)
let dataString = NSString(data: data!, encoding:NSUTF8StringEncoding)
print(dataString)
}
}
现在通过点击集合视图的单元格,json(api)具有相同的键值对,应该调用第二个api函数并根据第二个api json数据重新加载我的表视图。
应该接受mr.bista的回答......我们需要删除数组,即myarray.removeallobjects()
答案 0 :(得分:0)
基本骨架:
func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {
let category = categoryArray[indexPath.row]
myAPI(category.id)
}
func myAPI(categoryID:String) {
//pass the categoryID into the parameter to get corresponding data.
callAPI {
if success {
tableArray = data from server
tableView.reloadData()
} else {
//some error occurred
}
}
}