'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 |
|---|
