Запрашиваем ячейку табличного представления для номера ячейки - PullRequest
0 голосов
/ 10 ноября 2019

я кодирую табличное представление с пользовательской ячейкой. Ввод ячейки сохраняется на сервере анализа. Если пользователь нажимает ячейку, некоторые данные должны быть загружены на сервер. У меня вопрос, как мое приложение может распознать, какая ячейка была нажата в представлении таблицы?

У вас есть код для загрузки и загрузки данных для 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)
                    }
                })
        }
    }

}

}

Если вам нужна дополнительная информация, пожалуйста, свяжитесь со мной. Спасибо! Том

...