2016-09-28 2 views
0

Я пытаюсь создать карусель в своем приложении на основе этого проекта, https://github.com/nicklockwood/iCarousel, только я пишу его быстро. У меня он работает правильно, где можно прокручивать и нажмите на элемент с индексом правильно здесь:Идентификатор повторного использования на iCarousel

func carousel(_ carousel: iCarousel, viewForItemAt index: Int, reusing view: UIView?) -> UIView { 
     let tempView = UIView(frame: CGRect(x: 0, y: 130, width: 295, height: 300)) 
     let object = self.imageFilesArray.object(at: index) as! PFObject 

     let imageView = UIImageView() 
     imageView.frame = CGRect(x: 0, y: 0 , width: 295, height: 295) 
     imageView.layer.cornerRadius = 15 
     imageView.layer.masksToBounds = true 
     let imageFile = object.object(forKey: "Image") as! PFFile 
     imageFile.getDataInBackground{ 
      (data, error) -> Void in 
      if error == nil { 


      } 
      imageView.image = UIImage(data: data!) 
      tempView.addSubview(imageView) 
} 
     return tempView 
    } 



func carousel(_ carousel: iCarousel, didSelectItemAt index: Int) { 
let cell = carouselView.itemView(at: index) 
     let object = self.imageFilesArray[index] as! PFObject 

     if cell?.tag == 0 { 

      print("open cell") 
      let moveImg = CGAffineTransform(translationX: 0, y: -100) 
      UIView.animate(withDuration: 0.4, delay: 0.1, options: [], animations: { 
       //cell.imageView.transform = moveImg 

       }, completion: nil) 
      cell?.tag = 1 

     } else if cell?.tag == 1 { 

      let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) 

      let nextViewController = storyBoard.instantiateViewController(withIdentifier: "EventDetailViewController") as! EventDetailViewController 

      self.present(nextViewController, animated:false, completion:nil) 

     } 

Однако то, что я пытаюсь сделать, это когда я нажимаю на элемент с индексом, то ImageView переходы на экран. Моя проблема в том, что я не могу получить доступ к этим конкретным ячейкам imageView, чтобы переместить его. Кто-нибудь знает, что мне нужно изменить?

ответ

2

Вы могли бы дать вашему ImageView тег так:

let imageView = UIImageView() 
imageView.frame = CGRect(x: 0, y: 0 , width: 295, height: 295) 
imageView.layer.cornerRadius = 15 
imageView.layer.masksToBounds = true 
imageView.tag = 2 

Затем вы можете извлечь ImageView из клетки, как это:

if let imageView = cell.viewWithTag(2) as? UIImageView { 
    imageView.transform = moveImg 
} 

ИЛИ

Вы можете фильтровать через подзоны ячейки и найти первое подзапрос, которое можно отнести к UIImageView. Хотя это не очень удобно, подумайте о создании класса и XIB для этой ячейки.

cell.subviews.flatMap { $0 as? UIImageView }.first?.transform = moveImg 
Смежные вопросы