2016-07-11 7 views
0

Ich versuche, eine zurück/Return-Taste, um meine UICollectionView hinzuzufügen, habe ich diesen Code so weit auf die Schaltfläche implementieren:Zurück-Taste auf UICollectionView

import UIKit 

class EmojiPopup: UIView,UICollectionViewDataSource,UICollectionViewDelegate 
{ 
    var collocationView : UICollectionView! 
    var arrImagesList:NSMutableArray! 

    var blur:UIBlurEffect = UIBlurEffect() 

    override init(frame: CGRect) 
    { 

     super.init(frame: frame) 

     arrImagesList = NSMutableArray() 
     self.backgroundColor = UIColor.purpleColor().colorWithAlphaComponent(0.2) 
     let layout = UICollectionViewFlowLayout() 
     //header gap 
     layout.headerReferenceSize = CGSizeMake(20,20) 
     //collection view item size 
     layout.itemSize = CGSizeMake(70, 70) 
     layout.minimumInteritemSpacing = 25 
     layout.minimumLineSpacing = 25 
     collocationView = UICollectionView(frame: CGRectMake(50,50,UIScreen.mainScreen().bounds.screenWidth - 100,UIScreen.mainScreen().bounds.screenHeight - 100), collectionViewLayout: layout) 
     self.addSubview(collocationView) 

     // Create the blurEffect and apply to view 
     let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.ExtraLight) 
     let blurEffectView = UIVisualEffectView(effect: blurEffect) 
     blurEffectView.alpha = 0.7 
     blurEffectView.frame = self.bounds 
     self.addSubview(blurEffectView) 

     collocationView.backgroundColor = UIColor.purpleColor().colorWithAlphaComponent(0.002) 
     collocationView.dataSource = self 
     collocationView.delegate = self 
     collocationView.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: "cellIdentifier") 

     //hide scrollbar 
     self.collocationView.showsVerticalScrollIndicator = false 

     //back button 
     let btnBack = UIButton(frame:TCRectMake(x:138 ,y:523,width:45,height:45)) 
     btnBack.setImage(UIImage(named:"back"), forState: UIControlState.Normal) 
     btnBack.addTarget(self, action:"btnBackClick", forControlEvents: UIControlEvents.TouchUpInside) 
     self.addSubview(btnBack) 

     //back button func 
     func btnBackClick() 
     { 

     } 

     let fm = NSFileManager.defaultManager() 
     let path = NSBundle.mainBundle().resourcePath! 
     let items = try! fm.contentsOfDirectoryAtPath(path) 

     for item in items 
     { 
      if item.hasSuffix("png") && item.containsString("@") == false && item.containsString("AppIcon") == false && item.containsString("tick_blue") == false && item.containsString("video_camera") == false 
      { 
       arrImagesList.addObject(item) 
      } 
     } 
    } 
    var completeHandler:((String)->())? 
    func showDetails(viewParent:UIView,doneButtonClick:((String)->())?) 
    { 
     completeHandler = doneButtonClick 
     viewParent.addSubview(self) 
    } 
    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
    { 
     return arrImagesList.count 
    } 

    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell 
    { 
     let identifier="ImageCell\(indexPath.section)\(indexPath.row)" 
     collectionView.registerClass(ImageViewCell.self, forCellWithReuseIdentifier:identifier) 

     let cell = collectionView.dequeueReusableCellWithReuseIdentifier(identifier, forIndexPath: indexPath) as! ImageViewCell 
     cell.backgroundColor = UIColor(white:1, alpha:0) 
     cell.imgView.image = UIImage(named:arrImagesList[indexPath.row] as! String) 
     cell.imgView.backgroundColor = UIColor.clearColor() 
     cell.imgView.opaque = false 
     cell.imgView.contentMode = .ScaleAspectFit 

     //keeps blur to background 
     self.bringSubviewToFront(collocationView) 

     return cell 
    } 
// func collectionView(collectionView: UICollectionView, 
//  layout collectionViewLayout: UICollectionViewLayout, 
//  sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize 
// { 
//  let width=UIScreen.mainScreen().bounds.size.width-50 
//  return CGSize(width:width/3, height:width/3) 
// } 

    func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) 
    { 
     //let cell=collectionView.cellForItemAtIndexPath(indexPath) as! ImageViewCell 

     UIView.animateWithDuration(0.3, animations:{ 
      self.collocationView.alpha=0 
      }, completion: { finished in 

       if self.completeHandler != nil 
       { 
        self.completeHandler!(self.arrImagesList[indexPath.row] as! String) 
       } 
       self.removeFromSuperview() 
     }) 

    } 
    func showDetails(viewParent:UIView,dictData : [String:String],index:Int,doneButtonClick:(()->())?,cancelBUttonClick:(()->())?) 
    { 
    } 
    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 
} 

Ich mag die Sammlung Ansicht, wenn der Benutzer geschlossen werden Drücken Sie die Zurück-Taste, aber ich bin mir nicht sicher, was in der Zurück-Taste Funktion eingeben. Ich möchte, dass der Benutzer zurück zum Hauptansicht-Controller (Kartenansicht) wenn möglich

Antwort

1

Ich nehme an, Sie sprechen über eine UICollectionViewController und nicht über eine UICollectionView. Eine UICollectionViewController hat eine UICollectionView innen. Sie können eine UICollectionViewController, aber keine UICollectionView "schließen". Sie können sogar eine UIViewController ablehnen, die eine UICollectionView innen hat.

Sie haben zwei Möglichkeiten:

  1. Setzen Ihnen Sammlung View-Controller (und die Hauptansicht-Controller) in einer Navigationssteuerung, so dass Sie die Standard-Zurück-Taste bereits durch die Navigationssteuerung implementiert verwenden können.
  2. Sie können den Sammlungsansicht-Controller modal vom Hauptansicht-Controller aus darstellen. Dann brauchen Sie eine Schließen-Schaltfläche hinzufügen (nicht zurück Taste), die den Controller Controller (Die Hauptansicht entlassen wird bleiben „hinter“ so, wenn Sie die UICollectionViewController entlassen wird es wieder sichtbar wird.

Es ist ein langer Weg. Ich schlage vor, Sie lesen diese getting started guide von Apple, dort können Sie herausfinden, wie Navigationscontroller und was sie tun.Dies ist etwas, was Sie lernen müssen, wenn Sie mit Swift entwickeln.Ich schlage vor, gehen Sie weiter und lesen Sie das gesamte Tutorial.Nach dem Lesen dieses Kapitels Sie sollten den Navigationsfluss einer iOS-Anwendung verstehen und die Navigation auf der Rückseite implementieren.

Wenn Sie nach dem Lernprogramm Probleme haben, lassen Sie es mich wissen.

+0

Vielen Dank für Ihre Antwort :) Ich bin ziemlich neu zu schnell, so dass es nicht so einfach zu verstehen ist. Ich habe meine Frage mit dem vollständigen Klassencode aktualisiert. Ich denke, ich verwende eine UIVollectionView, haben Sie irgendwelche Vorschläge, um die Funktionalität der Rücktaste zu erreichen? – Oscar

+0

Ja, Sie können jede der beiden Optionen verwenden, die ich Ihnen gegeben habe. Ich glaube, dass beide die gleiche Komplexität haben, also hängt es davon ab, was Ihnen besser passt. Sie können nach einem Tutorial der Navigationscontroller suchen, um zu beginnen. –

+0

Können Sie mir vielleicht ein Beispiel geben, was Sie meinen? Ich finde es schwierig zu verstehen, wie Sie Ihren Vorschlag umsetzen können. – Oscar

Verwandte Themen