Я хочу получить текст из выбранной ячейки табличного представления, чтобы изменить метку в другом контроллере представления.
Моя первая проблема - мне не удается получить значение и после его установки
Вот мой файл таблицы:
class SelectionMarqueViewController: UITableViewController {
var posts = [Post]()
var indexMarques = 0
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
loadMarques()
}
func loadMarques() {
var ref : DatabaseReference?
ref = Database.database(url: "https://myride-test.firebaseio.com/").reference()
ref?.observe(.childAdded, with: { (snapshot) in
if let dict = snapshot.value as? [String: Any] {
let marqueText = dict["Marque"] as! String
let post = Post(marqueText: marqueText)
self.posts.append(post)
//print(self.posts)
self.tableView.reloadData()
}
if let dict = snapshot.value as? [String: Any] {
let marqueText = dict["Marque"] as! String
let post = Post(marqueText: marqueText)
self.posts.append(post)
self.posts = Array(Set(self.posts))
self.tableView.reloadData()
}
})
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return posts.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "PostCell", for: indexPath)
let orderPosts = self.posts.sorted { $0.marque < $1.marque}
cell.textLabel?.text = orderPosts[indexPath.row].marque
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
indexMarques = indexPath.row
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
var selectionMarque = segue.destination as! ChoiceGeneralTableViewController
}
}
Файл My Post:
class Post : Hashable {
var marque: String
init(marqueText: String) {
marque = marqueText
}
// Equatable for contains
static func == (lhs:Post,rhs:Post) -> Bool {
return lhs.marque == rhs.marque
}
// Hashable for Set
var hashValue:Int {
return marque.hashValue
}
}
Тогда мой файл просмотра, где метка должна быть изменена:
class ChoiceGeneralTableViewController: UITableViewController {
@IBOutlet weak var marquePressed: UILabel!
@IBOutlet weak var labelMarque: UILabel!
var marqueSelected = posts[indexMarques]
override func viewDidLoad() {
super.viewDidLoad()
labelMarque.text = marqueSelected
}
}
На самом деле мне не удается получить текст ячейки, self.posts возвращает ProjectName.Post
Спасибо за ваши исследования и помощь!