将值从uitableview传递给uicollectionview



我如何通过解析值从一个url已在UITableview中使用到一个UICollectionview(水平滚动)已在每个UITableviews单元格中使用?我想在swift语言中做这个。

我正在使用一个名为"collectionCat"的模型。

import Foundation
public class CollectionCat{

    var brandid:String = ""
    var brandname:String = ""
    var result:String = ""
    var noitems:String = ""

}

我也使用Alamofire从url解析数据。

override func viewDidLoad() {
    super.viewDidLoad()
    self.startActivityAnimating(message: "", type: NVActivityIndicatorType.BallClipRotate, color: AppColor.AppRed, padding: 10)
    Alamofire.request(.POST, "http://goringr.co.in/Mathrubhumi_project_ios/brand.php", parameters: ["": ""])
        .validate()
        .responseJSON { response in
            switch response.result {
            case .Success:
                print("Validation Successful")
                self.jsonResultParse(response.result.value!)
                self.stopActivityAnimating()
            case .Failure(let error):
                print(error)
                self.stopActivityAnimating()
                // return userCatagory
            }

    }

    // Do any additional setup after loading the view.
}
  if JSONArray.count != 0 {
        //_ = [UserCatagory]()

        for i:Int in 0 ..< JSONArray.count  {
            let jObject = JSONArray[i] as! NSDictionary
            let uCollect:CollectionCat = CollectionCat()
            uCollect.brandid = (jObject["brandid"] as AnyObject? as? String) ?? ""
            uCollect.brandname = (jObject["brandname"] as AnyObject? as? String) ?? ""
            uCollect.result = (jObject["result"] as AnyObject? as? String) ?? ""
            uCollect.noitems = (jObject["noitems"] as AnyObject? as? String) ?? ""
            collect.append(uCollect)
            print("collect COUNT ",collect.count)
        }
        self.newTable.reloadData()
    }

}

我不知道的是如何将存储的数据传输到UITableview的每个单元格中的UICollection视图。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
   // collectMaster = collect[indexPath.row]
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as!  SecondHomeViewCell
   // collectMaster = CollectionCat()
    cell.get = ????
    return cell
}
有谁能帮我一下吗?

SecondHomeViewCell的代码如下:

import UIKit
import Kingfisher
import Alamofire
import NVActivityIndicatorView

class SecondHomeViewCell: UITableViewCell{
    @IBOutlet weak var collectionView: UICollectionView!

    var genre:CollectionCat? = nil{
    didSet {
                collectionView.reloadData()
            }
    }


     func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        //return genre!.brandid
       // return genre
        return 1
    }
    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier("secondHome", forIndexPath: indexPath) as! SecondHomeCollectionViewCell
             if let genre = genre {
            cell.genre = genre.brandid[indexPath.row]
        }
        return cell
    }
    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
        let itemsPerRow:CGFloat = 4
        let hardCodedPadding:CGFloat = 5
        let itemWidth = (collectionView.bounds.width / itemsPerRow) - hardCodedPadding
        let itemHeight = collectionView.bounds.height - (2 * hardCodedPadding)
        return CGSize(width: itemWidth, height: itemHeight)
    }

}

在ViewController中添加一个数组,命名为

var collCat = [CollectionCat]()

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
   let collectMaster = collCat[indexPath.row]
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as!  SecondHomeViewCell

    cell.brandID = collectMaster.brandid
    //and so on
    return cell
}

如果这不是你想要的答案,请告诉我。因为我想澄清一下,但我还没有能力发表评论。我需要达到50个声望才能评论并要求一些澄清

您可以通过在UITableviewCell自定义类中创建函数来传递数据到集合视图

class SecondHomeViewCell: UITableViewCell{
//Array containing modals for particular tableview cell index path  

 var arrDataFromViewController = NSArray()
    func getData(arrData:NSArray){
        arrDataFromViewController = arrData
        collectionView.delegate = self
        collectionView.dataSource = self
        collectionView.reloadData()
        }

    @IBOutlet weak var collectionView: UICollectionView!

    var genre:CollectionCat? = nil{
    didSet {
                collectionView.reloadData()
            }
    }


     func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        //return genre!.brandid
       // return genre
        return 1
    }
    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier("secondHome", forIndexPath: indexPath) as! SecondHomeCollectionViewCell
             if let genre = genre {
            cell.genre = genre.brandid[indexPath.row]
        }
        return cell
    }
    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
        let itemsPerRow:CGFloat = 4
        let hardCodedPadding:CGFloat = 5
        let itemWidth = (collectionView.bounds.width / itemsPerRow) - hardCodedPadding
        let itemHeight = collectionView.bounds.height - (2 * hardCodedPadding)
        return CGSize(width: itemWidth, height: itemHeight)
    }

}

//现在在tableview数据源方法

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
   // collectMaster = collect[indexPath.row]
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as!  SecondHomeViewCell
   // collectMaster = CollectionCat()
    cell.getData =  yourArray[indexPath.row]//Get Array data
    return cell
}

最新更新