2017-05-06 28 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