2016-03-30 3 views
0

Ich habe eine Sammlung anzeigen und ich zeige einige Namen und Bilder.Ist funktioniert gut.Aber ich habe auch einige id.so, wenn meine erste Zelle ist geklickt, muss ich den Namen mit der entsprechenden ID anzeigen.Wie ID mit Namen übergeben werden. Also durch Klicken auf eine beliebige Zelle muss ich die jeweilige Namen-ID in der Sammlungsansicht Zelle

mein voller Code:

import UIKit 

class popVC: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate { 


    // use array to store the name and images fro collection view 
    var tableData: [String] = ["RESTAURANTS", "BANKS", "COFFEE","PIZZA", "HOTELS", "TAXI", "RESTAURANTS", "BANKS", "COFFEE","PIZZA", "HOTELS", "TAXI", "RESTAURANTS","BANKS", "COFFEE","PIZZA", "HOTELS", "TAXI","RESTAURANTS", "BANKS", "COFFEE","PIZZA", "HOTELS", "TAXI", "RESTAURANTS", "BANKS", "COFFEE","PIZZA", "HOTELS", "TAXI"] 
    var tableImages: [String] = ["img1.png", "img2.png", "img3.png", "img4.png", "img5.png", "img6.png","img1.png", "img2.png", "img3.png", "img4.png", "img5.png", "img6.png","img1.png", "img2.png", "img3.png", "img4.png", "img5.png", "img6.png","img1.png", "img2.png", "img3.png", "img4.png", "img5.png", "img6.png","img1.png", "img2.png", "img3.png", "img4.png", "img5.png", "img6.png",] 


    var idnumber: [String] = ["1", "2", "3", "4", "5", "6","7", "8", "9", "10", "11", "12","13", "14", "15", "16", "17", "18","20", "21", "22", "23", "24", "25","26", "27", "28", "29", "30", "31"] 


    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

    } 
// collection view delegate 

    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
     return tableData.count 
    } 

    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
     let cell: colvwCell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! colvwCell 
     cell.lblCell.text = tableData[indexPath.row] 


     cell.imgCell.image = UIImage(named: tableImages[indexPath.row]) 

     return cell 
    } 


    func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 


    } 


    // Action method for dismis the view controlelr 
    @IBAction func dismissVC(sender: AnyObject) { 

     var presentingViewController: UIViewController! = self.presentingViewController 

     self.dismissViewControllerAnimated(false) { 
      // go back to MainMenuView as the eyes of the user 
      presentingViewController.dismissViewControllerAnimated(false, completion: nil) 


      //self.dismissViewControllerAnimated(true, completion: nil) 
     } 


     //} 
    } 
    // collection view cell space and size 
    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 

     return CGSizeMake((self.view.frame.size.width/3) - 10, (self.view.frame.size.width/3) - 15); 

    } 



    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


} 

Dieser Code wird den Namen mit Bildern wie in einem Array wie meine Daten anzeigen .Aber wenn ich meine erste Zelle klicken, ich brauche die ID diese Zelle anzuzeigen

Zum Beispiel:

wenn ich auf die first cell (Restaurant, img1.png) klicke. In meiner Konsole muss ich ID = 1 gemäß meinem fest codierten Wert in meinem Code anzeigen.

Wie geht das ???

Antwort

1

Sie können von einer der Delegatmethoden machen

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 
print(idnumber[indexPath.row]) 
} 

Das für den Druck ist zu trösten, wenn Sie etwas anderes tun, dann können Sie immer die ID Zugriff auf diese Weise

idnumber[indexPath.row] 

Jetzt weiß ich, dass Sie diese ID an einen anderen View-Controller übergeben möchten. Nehmen wir an, Ihr nächster viewController heißt YourViewController und hat eine globale Variable namens id, Ihre Segment-ID ist "yourSegueID". Ich hoffe, dass ich Ihnen das Konzept der preparedForSegue-Methode vorstellen kann.

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if(segue.identifier == "yourSegueID"){ 
      var cell: UICollectionViewCell = sender as! UICollectionViewCell 
      var indexPath:NSIndexPath = self.collectionView.indexPathForCell(cell)! 
      let vc:YourViewController = segue.destinationViewController as! YourViewController 
      vc.id = idnumber[indexPath.row] 
     } 
} 
+0

Danke, aber basierend darauf muss ich diese ID an einen anderen View-Controller übergeben. so dass in der nächsten Ansicht Controller habe ich eine Tabellenansicht. Wenn meine ID = 1 bedeutet, muss der Name des Restaurants angezeigt werden. Wenn meine ID = 2 bedeutet. es muss den Namen der Bank anzeigen. Wie kann ich also mit dieser ID zu einem anderen View-Controller navigieren. Und basierend auf meiner ID wie kann ich die Daten anzeigen? – user5513630

+0

ok, get it, gib mir eine Minute – DCDC

+0

sure.thanks ..... – user5513630

1

Der Schlüssel wird von indexPath verwendet.

if let indexPath = self.tableView.indexPathForSelectedRow { 
        let selectedData = tableData[indexPath.row] as String 
       } 
Verwandte Themen