2016-07-11 6 views
0

Я пытаюсь добавить кнопку возврата/возврата к моему UICollectionView, у меня есть этот код до сих пор реализовать кнопку:кнопку Назад на 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") 
    } 
} 

Я хочу вид коллекции должен быть закрыт, если пользователь нажимает кнопку «Назад», но я не уверен, что вводить в функцию кнопки «Назад». Я хочу, чтобы пользователь был возвращен обратно на главный контроллер вида (mapview), если это возможно

ответ

1

Предполагаю, что вы говорите об UICollectionViewController, а не о UICollectionView. A UICollectionViewController имеет UICollectionView внутри. Вы можете «закрыть» (уволить) UICollectionViewController, но не UICollectionView. Вы можете даже уволить UIViewController, у которого есть UICollectionView.

У вас есть два варианта:

  1. Put вас вид коллекции контроллер (и главный контроллер представления) внутри навигационного контроллера, так что вы можете использовать уже внедренную навигационный контроллер кнопку по умолчанию обратно.
  2. Вы можете представить контроллер представления коллекции по модулю с главного контроллера. Затем нужно добавить кнопку (не кнопку назад), что освобождает контроллер (Главный контроллер зрения будет оставаться «за» так что, когда вы уволить UICollectionViewController он станет видимым.

Это долгий путь. Я предлагаю вам прочитать это от getting started guide от Apple, там вы можете понять, как работают контроллеры навигации и что они делают. Это то, что вам нужно изучить при разработке с помощью Swift. Предлагаю вам перейти дальше и прочитать весь учебник. вы должны понимать поток навигации приложения iOS и осуществлять навигацию по кнопке «Назад».

Если вы обнаружили какие-либо проблемы после этого урока, дайте мне знать.

+0

Спасибо за ваш ответ :) Я совершенно новый, чтобы быстро, поэтому его не так легко понять. Я обновил свой вопрос с полным кодом класса. Я думаю, что я использую UIVollectionView, есть ли у вас какие-либо предложения по созданию функциональных возможностей кнопки «Назад»? – Oscar

+0

Да, вы можете использовать любой из двух вариантов, которые я вам дал. Я считаю, что обе имеют одинаковую сложность, поэтому это зависит от того, что вам подходит. Вы можете найти учебное руководство для навигационных контроллеров. –

+0

Можете ли вы дать мне пример того, что вы имеете в виду? Мне трудно понять, как реализовать ваше предложение. – Oscar

Смежные вопросы