1

In my app, I'm trying to display information of a employee of a club, in which the Fist table lists out the clubs (from Parse Backend), once a club is selected, it shows all the employees(and their profile image) working in that club again in a table(clubdetailTableVC) and finally, if an employee is selected, then complete details of him are displayed in detailVC along with his profile image.

If been able to pass the club object from the first clubTableVC to clubDetailVC, but couldn't go any further. here is my complete code. All the employees(PFUser) are saved in class "User", Club table has array of employees(usernames as string).

  //ClubtableVC.swift

   import UIKit

      class ClubsTableVC: PFQueryTableViewController {
    override init(style:UITableViewStyle, className: String!){
        super.init(style: style, className: className)

        self.parseClassName = "Club"
        self.textKey = "clubName"
        self.pullToRefreshEnabled = true
        self.paginationEnabled = false
    }
required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override func queryForTable() -> PFQuery {

        var query = PFQuery(className: "Club")

        return query
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell? {

        var cell = tableView.dequeueReusableCellWithIdentifier("clubCell") as! PFTableViewCell!

        if cell == nil {

            cell = PFTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "clubCell")
        }

        if let clubName = object?["ClubName"] as? String {

            cell?.textLabel?.text = clubName

        }
       return cell
    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

        //var detailScene = segue.destinationViewController as! ClubDetailsViewController
        var clubScene = segue.destinationViewController as! clubPromoterTableVC
        if let indexPath = self.tableView.indexPathForSelectedRow() {

            let row = Int(indexPath.row)
            //detailScene.currentObject = (objects?[row] as! PFObject)
            clubScene.currentObject = (objects?[row] as! PFObject)

        }
    }
   }

//clubManagerVC.swift

class clubManagerTableVC: PFQueryTableViewController {

    var currentObject : PFObject?
    var usernames = [String]()
    var images = [UIImage]()



    override init(style:UITableViewStyle, className: String!){
        super.init(style: style, className: className)

        self.parseClassName = "_User"
        self.textKey = "fullname_lower"
        self.pullToRefreshEnabled = true
        self.paginationEnabled = false


    }


    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

    }

     func queryForUser() -> PFUser {

        var query = PFUser(className: "Club")

        return query

    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell? {

        var cell = tableView.dequeueReusableCellWithIdentifier("managerCell") as! PFTableViewCell!

         cell = PFTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "managerCell")

        if cell == nil {


            var query = PFUser.query()!
            query.whereKey("username", equalTo: currentObject!)// currentObject from 1st VC

            //query.whereKey("username", equalTo: PFUser.currentUser()!.objectId!)
            //query.whereKey("objectId", containedIn: PFUser.currentUser()?["accepted"] as! [String])

            query.findObjectsInBackgroundWithBlock { (results, error) -> Void in

                if let results = results {

                    for result in results as! [PFUser] {

                        self.usernames.append(result.username!)

                        let imageFile = result["picture"] as! PFFile

                        imageFile.getDataInBackgroundWithBlock {
                            (imageData: NSData?, error: NSError?) -> Void in

                            if error != nil {

                                print(error)

                            } else {

                                if let data = imageData {

                                    self.images.append(UIImage(data: data)!)

                                    self.tableView.reloadData()

                                }
                                }
                            }
                         }

                    self.tableView.reloadData()
                  }
               }
            }

        cell.textLabel?.text = usernames[indexPath.row]

        if images.count > indexPath.row {

            cell.imageView?.image = images[indexPath.row]

        }



        if let clubName = object?["ClubName"] as? String {

            cell?.textLabel?.text = clubName

        }
        return cell
    }


}
Skper11
  • 61
  • 10

0 Answers0