title: How to add a button to a collectionview cell
body: <p>Currently I have a <code>collectionview</code> with a cell which loads images from <code>library</code>.I wish to add a cell with a button before that to open the <code>camera</code>.How can I do this?? </p>
  
  <pre><code>import UIKit
  import Photos
  import MobileCoreServices
  private let reuseIdentifier = "PhotoCell"
  class AddPhotoViewController: UIViewController , UIImagePickerControllerDelegate ,UINavigationControllerDelegate ,UICollectionViewDataSource ,UICollectionViewDelegate{
  
      @IBOutlet weak var photoAlbum: UICollectionView!
  
      var TakenImage : UIImageView!
      var selectedImage : UIImage!
      var pickedImage : UIImage!
      var assetCollection: PHAssetCollection!
      var photosAsset: PHFetchResult!
      var assetThumbnailSize: CGSize!
      let imagePicker: UIImagePickerController! = UIImagePickerController()
      var cameraon : Bool = false
      var index : [NSIndexPath]!
  
      var note : String!
      var noteAlreadyEntered = false
      override func viewDidLoad()
      {
          super.viewDidLoad()
  
          let collection:PHFetchResult = PHAssetCollection.fetchAssetCollectionsWithType(.SmartAlbum, subtype: .SmartAlbumUserLibrary, options: nil)
  
          var i = 0
          repeat
          {
              if let first_Obj:AnyObject = collection.objectAtIndex(i)
              {
                  self.assetCollection = first_Obj as! PHAssetCollection
              }
              i++
          }while( i &lt; collection.count)
  
  
  
          // Do any additional setup after loading the view.
      }
  
      @IBAction func takePhoto(sender: AnyObject) {
  
          let picker = UIImagePickerController()
          picker.delegate = self
          picker.sourceType = .Camera
          presentViewController(picker, animated: true,completion : nil)
          save(TakenImage.image!)
  
  
      }
      func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject])
      {
  
          TakenImage.image = info[UIImagePickerControllerOriginalImage] as? UIImage ; dismissViewControllerAnimated(true, completion: nil )
  
      }
      @IBAction func save(sender: AnyObject)
      {
          UIImageWriteToSavedPhotosAlbum(TakenImage.image!, self, "image:didFinishSavingWithError:contextInfo:", nil)
      }
      func image(image: UIImage, didFinishSavingWithError error: NSError?, contextInfo:UnsafePointer&lt;Void&gt;)
      {
          if error == nil {
              let ac = UIAlertController(title: "Saved!", message: "Your altered image has been saved to your photos.", preferredStyle: .Alert)
              ac.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
              presentViewController(ac, animated: true, completion: nil)
          } else
          {
              let ac = UIAlertController(title: "Save error", message: error?.localizedDescription, preferredStyle: .Alert)
              ac.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
              presentViewController(ac, animated: true, completion: nil)
          }
      }
  
  
          override func viewWillAppear(animated: Bool)
      {
          if let layout = self.photoAlbum!.collectionViewLayout as? UICollectionViewFlowLayout{
              let cellSize = layout.itemSize
  
              self.assetThumbnailSize = CGSizeMake(cellSize.width, cellSize.height)
          }
  
          //fetch the photos from collection
          self.photosAsset = PHAsset.fetchAssetsInAssetCollection(self.assetCollection, options: nil)
  
          self.photoAlbum!.reloadData()
  
  
      }
  
      // MARK: UICollectionViewDelegate
  
      /*
      // Uncomment this method to specify if the specified item should be selected
      override func collectionView(collectionView: UICollectionView, shouldSelectItemAtIndexPath indexPath: NSIndexPath) -&gt; Bool {
      return true
      }
      */
  
  
      override func didReceiveMemoryWarning() {
          super.didReceiveMemoryWarning()
          // Dispose of any resources that can be recreated.
      }
      override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
      {
          if (segue.identifier == "savePhoto")
          {
              if let controller : NoteDetailViewController = segue.destinationViewController as? NoteDetailViewController
              {
                  controller.takinPhoto = true
               //   controller.imageView2.image = TakenImage.image
                  if(noteAlreadyEntered == true)
                  {
                      controller.content = note
                      controller.imageView.image = TakenImage.image
                  }
                  else
                  {
                      controller.imageView2.image = TakenImage.image
                  }
  
              }
          }
             if (segue.identifier == "saveSelected")
          {
  
  
              let cell = sender as! PhotoAlbumCollectionViewCell
              let indexPath = photoAlbum.indexPathForCell(cell)
              let destVC = segue.destinationViewController as! NoteDetailViewController
              destVC.asset = self.photosAsset[indexPath!.item] as! PHAsset
  
              destVC.flag = true
              if(noteAlreadyEntered == true)
              {
                  destVC.content = note
              }
  
          }
  
  
  
      }
  
      func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)
      {
      }
  
  
  
      func numberOfSectionsInCollectionView(collectionView: UICollectionView) -&gt; Int
      {
          // #warning Incomplete implementation, return the number of sections
          return 1
      }
  
      func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -&gt; Int
      {
          // #warning Incomplete implementation, return the number of items
          var count: Int = 0
  
          if(self.photosAsset != nil){
              count = self.photosAsset.count
          }
          print("\(self.photosAsset.count)")
          return count + 1
      }
      func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -&gt; UICollectionViewCell
      {
          let cell: PhotoAlbumCollectionViewCell = photoAlbum.dequeueReusableCellWithReuseIdentifier("PhotoCell", forIndexPath: indexPath) as! PhotoAlbumCollectionViewCell
  
          //Modify the cell
          let asset: PHAsset = self.photosAsset[indexPath.item] as! PHAsset
  
          PHImageManager.defaultManager().requestImageForAsset(asset, targetSize: self.assetThumbnailSize, contentMode: .AspectFill, options: nil, resultHandler: {(result, info)in
              if let image = result {
                  cell.setThumbnailImage(image)
              }
          })
  
          return cell
      }
  
  
  
      func collectionView(collectinView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -&gt; CGFloat {
          return 4
      }
  
      func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -&gt; CGFloat {
          return 1
      }
  
      func collectionView(collectionView: UICollectionView, shouldShowMenuForItemAtIndexPath indexPath: NSIndexPath) -&gt; Bool {
          return false
      }
  
      func collectionView(collectionView: UICollectionView, canPerformAction action: Selector, forItemAtIndexPath indexPath: NSIndexPath, withSender sender: AnyObject?) -&gt; Bool {
          return false
      }
  
      func collectionView(collectionView: UICollectionView, performAction action: Selector, forItemAtIndexPath indexPath: NSIndexPath, withSender sender: AnyObject?) {
  
          self.dismissViewControllerAnimated(false, completion: nil)
  
      }
  
  }
  </code></pre>