2017-08-24 33 views
-2

我一直在試圖製作一個項目,該項目應該包含collectionView,在從中選擇一個項目後,它會跳轉到另一個collectionView如何在選擇didselectitem到另一個集合視圖後從集合視圖進行導航

import UIKit 

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate { 
@IBOutlet weak var myCollectionView: UICollectionView! 
var imgURLArray = [String]() 

var nameArray = [String]() 
final let urlString = "https://unembittered-vector.000webhostapp.com/JSON/alljson.txt" 
override func viewDidLoad() { 
    super.viewDidLoad() 
    self.downloadJsonWithURL() 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 

} 
func downloadJsonWithURL() { 
    let url = NSURL(string: urlString) 
    URLSession.shared.dataTask(with: (url as? URL)!, completionHandler: {(data, response, error) -> Void in 

     if let jsonObj = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? NSDictionary { 
      print(jsonObj!.value(forKey: "Materials")!) 

      if let actorArray = jsonObj!.value(forKey: "Materials") as? NSArray { 
       for actor in actorArray{ 
        if let actorDict = actor as? NSDictionary { 
         if let name = actorDict.value(forKey: "name") { 
          self.nameArray.append(name as! String) 
         }/* 
         if let name = actorDict.value(forKey: "dob") { 
          self.dobArray.append(name as! String) 
         } */ 
         if let name = actorDict.value(forKey: "image") { 
          self.imgURLArray.append(name as! String) 
         } 

        } 
       } 
      } 


      OperationQueue.main.addOperation({ 
       self.myCollectionView.reloadData() 
      }) 
     } 
    }).resume() 
} 


func downloadJsonWithTask() { 

    let url = NSURL(string: urlString) 

    var downloadTask = URLRequest(url: (url as? URL)!, cachePolicy: URLRequest.CachePolicy.reloadIgnoringCacheData, timeoutInterval: 20) 

    downloadTask.httpMethod = "GET" 

    URLSession.shared.dataTask(with: downloadTask, completionHandler: {(data, response, error) -> Void in 

     let jsonData = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments) 

     print(jsonData!) 

    }).resume() 
} 


//Number of views 
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 

    return imgURLArray.count 

} 

    //Populate view 
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
{ 

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! myCell 
    print("test") 
    cell.nameLabel.text = nameArray[indexPath.row] 
    let imgURL = NSURL(string: imgURLArray[indexPath.row]) 

    if imgURL != nil { 
     print("check") 
     let data = NSData(contentsOf: (imgURL as? URL)!) 
     //cell.myImageView.image = UIImage(data: data as! Data) 
     cell.myImageView.image = UIImage(data: data as! Data) 

    } 
    else{ 
     print("error")} 
    //cell.myImageView.image = UIImage(named: array[indexPath.row] + ".JPG") 
    return cell 
} 

/*func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    let vc = self.storyboard?.instantiateViewController(withIdentifier: "ViewController") as! ViewController 
    //vc.imageString = imgURLArray[indexPath.row] 
    //vc.nameString = nameArray[indexPath.row] 
    //vc.dobString = dobArray[indexPath.row] 

    //cell.myImageView.image = UIImage(named: array[indexPath.row] + ".JPG") 
    //return cell1 

    //self.navigationController?.pushViewController(vc, animated: true)  
}*/ 
} 
+0

您面臨的問題是什麼? – PGDev

+0

我新在ios ..我想要在點擊上面的代碼中的集合視圖中的項目後再去另一個集合視圖。 –

+0

請告訴我們你想要的東西。 –

回答

0

這裏是你如何能實現你所尋找的一個例子:

1.故事板

enter image description here

2.視圖控制器

import UIKit 

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate 
{ 
    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
    } 

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
    { 
     return 10 
    } 

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
    { 
     return collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) 
    } 

    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) 
    { 
     let controller = self.storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController 
     self.navigationController?.pushViewController(controller, animated: true) 
    } 
} 

class SecondViewController: UIViewController, UICollectionViewDataSource 
{ 
    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
    } 

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
    { 
     return 5 
    } 

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
    { 
     return collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) 
    } 
} 

如果您遇到任何問題,請回復。

+0

謝謝,我感謝您的回覆 –

+0

您是否達到了您的要求? – PGDev

+0

你可以幫我一個集合視圖的例子,它從json加載圖像數據並單擊視圖中的項目以導航到具有集合視圖的另一個頁面,該視圖再次從json加載數據。 @PGDev –

相關問題