2016-11-07 27 views
1

如何將已經在UITableview中使用的URL的解析值傳遞給已在每個UITableviews單元格中使用的UICollectionview(水平滾動)?我想用迅捷的語言來做到這一點。將值從uitableview傳遞到uicollectionview

我正在使用名稱爲「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() 

    } 



} 

我不知道什麼是如何存儲的數據傳送到UICollection視圖這是在所提到的UITableView的每個單元。

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) 
    } 



} 
+0

你能包括從你的'SecondHomeViewCell'類的代碼 – Danoram

+0

在您的SecondHomeViewCell中,通過storyboard添加集合視圖@IBOutlet weak var collectionView:UICollectionView! ,cell.setData(collect [indexPath.row),並在setData中,將此數組設置爲收集視圖的數據模型 – jpulikkottil

回答

0

添加陣列在你的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個聲望才能評論並提出一些澄清。

+0

剛纔我已經添加了第二個HomeViewCell的代碼。你能不能也看看,也給我一個答案,包括那個。 –

+0

你能否也請告訴我如何在SecondHomeViewCell中調用它 –

0

您可以通過在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 
}