如何通过在 swift 中点击 collection 视图的单元格来重新加载 table 视图中的数据

How to reload data in table view by tapping the cell of collection view in swift

我在我的一个控制器中使用 swift 开发一个应用程序我同时使用 collection 视图和 table view.collection 视图,它们保持在滚动的控制器顶部水平并包含近 10 个单元格,table 视图仅保持在 collection 下方 view.i 已将 json(api) 数据传递给 collection 和 table 查看现在我必须调用另一个 json 数据(另一个 api),它是第一个 json 数据之前的子类别,然后如果我点击 collection 查看它应该调用第二个 api 并再次重新加载 table 视图以显示第二个 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()
}    

我的 table 和 collection 视图的数据源方法:

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

collection 视图:

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 并传递 data.now 我有另一个 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) 都具有相同的键值对,点击 collection 视图的单元格应该调用第二个 api 函数并重新加载我的 table根据第二个apijson数据查看

mr.bista 答案应该被接受....

只是我们需要删除数组,即myarray.removeallobjects()

基本骨架:

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
     }

   }

}