'Asking a Table View Cell for the number of the cell

I'm coding a table view with a custom cell. The Cell Input is saved on a Parse Server. If the user press a Cell, some data have to be uploaded to the Server. My question is, how can my app recognize which cell was pressed in the table view?

Got some code to download and upload data for Parse:

import UIKit
import Parse
class ChooseJobViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    private var reuseIdentifer = "ChooseJobCell"
    var titleLabel: UILabel!
    var backButton: UIButton!
    let tableView = UITableView()
    
    var objectsIds = [String]()
    var choosedId = ""
    //var users = [String]()
    var jobNames = [String]()
    var regions = [String]()
    //var distances = [String]()
    var hours = [String]()
    var wages = [String]()
    var totalWages = [String]()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .white
        retrieveJobs()
        createViewControllerItems()
    }
    func createViewControllerItems() {
    "skiped"
    }
    @objc func backMenu() {
        let vc: MainViewController!
        vc = MainViewController()
        vc.modalPresentationStyle = .fullScreen
        present(vc, animated: false)
    }
    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return jobNames.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: reuseIdentifer, for: indexPath) as! ChooseJobCell
        cell.jobIdLabel.text = objectsIds[indexPath.row]
        //cell.userLabel.text = users[indexPath.row]
        cell.descriptionLabel.text = jobNames[indexPath.row]
        cell.regionLabel.text = regions[indexPath.row]
        //cell.distanceLabel.text = distances[indexPath.row]
        cell.wageLabel.text = "\(wages[indexPath.row])€"
        cell.hourLabel.text = "\(hours[indexPath.row]) Stunden"
        cell.finalWageLabel.text = "\(totalWages[indexPath.row])"
        cell.applyButton.setTitle("Bewerben", for: UIControl.State.normal)
        cell.applyButton.addTarget(self, action: #selector(apply2), for: .touchUpInside)
        return cell
    }
    func retrieveJobs() {
        let query = PFQuery(className: "Jobs")
            query.findObjectsInBackground { (objects, error) in
                if let users = objects {
                    for user in users {
                        self.objectsIds.append(user.objectId!)
                        //self.users.append(user["user"] as! String)
                        self.jobNames.append(user["job"] as! String)
                        self.regions.append(user["region"] as! String)
                        //self.distances.append(user["distance"] as! String)
                        self.hours.append(user["hour"] as! String)
                        self.wages.append(user["wage"] as! String)
                        self.totalWages.append(user["finalwage"] as! String)
                        self.tableView.reloadData()
                    }
                }
        }
    }
    func displayAlert(title: String, message: String) {
        let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertController.Style.alert)
        alert.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action) in
            self.dismiss(animated: true, completion: nil)
        }))
        self.present(alert, animated: true, completion: nil)
    }
    
    @objc func apply() {
        /*print("Bewerben wird versucht")
        let jobs = PFObject(className: "Jobs")
        jobs["ANuser"] = PFUser.current()
        jobs.saveInBackground(block: {(success, error) in
        if let error = error {
            self.displayAlert(title: "Bewerben Fehlgeschlagen", message: "Bitte versuche es später erneut!")
            print("Bewerben fehlgeschlagen")
        }else {
            print("Beworben")
            let vc: MainViewController!
            vc = MainViewController()
            vc.modalPresentationStyle = .fullScreen
            self.present(vc, animated: false)
            }
        }*/
    }
    @objc func apply2() {
        let query = PFQuery(className:"Jobs")
        query.getObjectInBackground(withId: "z067fgb2OU") { (job: PFObject?, error: Error?) in
            if let error = error {
                print(error.localizedDescription)
            } else if let jobs = job {
                jobs["ANuser"] = PFUser.current()
                jobs.saveInBackground(block: {(success, error) in
                    if let error = error {
                        self.displayAlert(title: "Bewerben Fehlgeschlagen", message: "Bitte versuche es später erneut!")
                        print("Bewerben fehlgeschlagen")
                    }else {
                        print("Beworben")
                        let vc: MainViewController!
                        vc = MainViewController()
                        vc.modalPresentationStyle = .fullScreen
                        self.present(vc, animated: false)
                        }
                    })
            }
        }

    }
}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source