2017-05-06 26 views
0

在collectionviewcell中有一个按钮,当我单击按钮时,目标是延续到更详细的视图控制器。单击uicollection单元中的按钮以继续

class WelcomeViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate,UIGestureRecognizerDelegate, UISearchBarDelegate { 


    @IBOutlet weak var CollectionView: UICollectionView! 


    var databaseRef = FIRDatabase.database().reference() 
    var loggedInUser = FIRAuth.auth()?.currentUser 
    var dictDetails: [String:AnyObject]? 
    var posts = NSMutableArray() 
    let storage = FIRStorage.storage() 


    override func viewDidLoad() { 
     super.viewDidLoad() 
     (CollectionView.collectionViewLayout as! UICollectionViewFlowLayout).itemSize = CGSize(width: (self.view.frame.width - 10)/2.4, height: (self.view.frame.width - 10)/1.5) 
     self.navigationItem.title = "Lit Swap" 
     CollectionView.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 300) 
     self.CollectionView.contentInset = UIEdgeInsetsMake(-65, 0, 0, 0) 
     definesPresentationContext = true 

     loadData() 
    } 


    @IBAction func editButtonTapped() -> Void { 
     print("Hello Edit Button") 
     performSegue(withIdentifier: "UsersProfile", sender: self) 

     func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
      if segue.identifier == "UsersProfile" { 


       self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white] 


       if let indexPaths = self.CollectionView!.indexPathsForSelectedItems{ 

       ///I DONT THINK YOU SHOULD REFERENCE POST, REFERENCE BOOKS INSTEAD/////////////// 

        // if let indexPaths = self.CollectionView.cellForItem(at: <#T##IndexPath#>){ 


        let vc = segue.destination as! UsersProfileViewController 
        let cell = sender as! UICollectionViewCell 
        let indexPath = self.CollectionView!.indexPath(for: cell) 
        let post = self.posts[(indexPath?.row)!] as! [String: AnyObject] 
        // let username = post["username"] as? String 
        let userpicuid = post["uid"] as? String 
        // vc.username = username 
        vc.userpicuid = userpicuid 


        print(indexPath?.row) 

         }} } 


    } 


    func loadData(){ 
     if (FIRAuth.auth()?.currentUser) != nil{ 
      FIRDatabase.database().reference().child("books").observeSingleEvent(of: .value, with: { (snapshot:FIRDataSnapshot) in 

       let loggedInUserData = snapshot 
       if let postsDictionary = snapshot .value as? [String: AnyObject] { 
        for post in postsDictionary { 
         self.posts.add(post.value) 
        } 
        self.CollectionView.reloadData() 


       }})} 
    } 

    // Properties of the UICollectionView 
    func numberOfSections(in collectionView: UICollectionView) -> Int { 
     return 1 
    } 

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

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 



     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! PinterestLikeCollectionViewCell 


     //configure the cell... 

     if (FIRAuth.auth()?.currentUser) != nil{ 


      print(posts[indexPath.row]) 
      let post = self.posts[indexPath.row] as! [String: AnyObject] 
      cell.Title.text = post["title"] as? String 
      cell.Author.text = post["Author"] as? String 

      let editButton = UIButton(frame: CGRect(x: 8, y: 225, width: 154, height: 45)) 

      editButton.addTarget(self, action: #selector(editButtonTapped), for: UIControlEvents.touchUpInside) 
      editButton.tag = indexPath.row 
      print(indexPath.row) 
      editButton.isUserInteractionEnabled = true 

      cell.addSubview(editButton) 

      if let imageName = post["image"] as? String { 

       let imageRef = FIRStorage.storage().reference().child("images/\(imageName)") 


       imageRef.data(withMaxSize: 25 * 1024 * 1024, completion: { (data, error) -> Void in 
        if error == nil { 

         let image = UIImage(data: data!) 
         cell.Books.image = image 

         cell.Books.roundCornersForAspectFit(radius: 10) 
         cell.Books.clipsToBounds = true 


        }else { 

         print("Error downloading image:") 
        }})}} 
     return cell 
    } 

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 

     return CGSize(width: CGFloat((collectionView.frame.size.width/5) - 20), height: CGFloat(500)) 
    } 


    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 

    } 



    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if segue.identifier == "details" { 


      self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white] 


      if let indexPaths = self.CollectionView!.indexPathsForSelectedItems{ 

       let vc = segue.destination as! BookDetailsViewController 
       let cell = sender as! UICollectionViewCell 
       let indexPath = self.CollectionView!.indexPath(for: cell) 
       let post = self.posts[(indexPath?.row)!] as! [String: AnyObject] 
       let Booked = post["title"] as? String 
       let Authors = post["Author"] as? String 
       let ISBNS = post["ISBN"] as? String 
       let Prices = post["Price"] as? String 
       let imageNames = post["image"] as? String 
       let imagesTwo = post["imageTwo"] as? String 
       let imagesThree = post["imageThree"] as? String 
       let imagesFour = post["imageFour"] as? String 
       let imagesFive = post["imageFive"] as? String 
       vc.Booked = Booked 
       vc.Authors = Authors 
       vc.ISBNS = ISBNS 
       vc.Prices = Prices 
       vc.imageNames = imageNames 
       vc.imagesTwo = imagesTwo 
       vc.imagesThree = imagesThree 
       vc.imagesFour = imagesFour 
       vc.imagesFive = imagesFive 

       print(indexPath?.row) 

      } }} 

} 

但是,它什么也没做。我目前有我的单元格设置,当你点击它时,它会延伸到一个详细的视图控制器。但单元格内的按钮单击时应该转到不同的详细视图控制器。对于单元格的segue,这些信息用于放置放在didSelectItemAt函数中的内容。我不确定在单元格中包含按钮的segue的功能。

回答

0

你能整体包括你的课程,这样我就能更好地理解你的配置视图的方式吗?我会用我认为会有所帮助的更新我的答案,从我所认为的可能会发生的一些不同事情引发这种情况。

UPDATE

试试这个:

  1. 创建并在PinterestLikeCollectionViewCell类添加您的按钮。
  2. 制作一个协议,告诉它的委托在单击单元格按钮时预先执行您的操作。
  3. 将您的WelcomeViewController类指定为该委托并符合该协议。
+0

我已更新它 – juelizabeth