я кодирую табличное представление с пользовательской ячейкой. Ввод ячейки сохраняется на сервере анализа. Если пользователь нажимает ячейку, некоторые данные должны быть загружены на сервер. У меня вопрос, как мое приложение может распознать, какая ячейка была нажата в представлении таблицы?
У вас есть код для загрузки и загрузки данных для 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)
}
})
}
}
}
}
Если вам нужна дополнительная информация, пожалуйста, свяжитесь со мной. Спасибо! Том