У меня есть это табличное представление, и я хотел бы передать имя пользователя контроллеру представления и отобразить его там на ярлыке, но он не работает. Имя пользователя происходит от базы данных firebase. Я также проверял другие вопросы, но не могу принять его к моей проблеме. Я не эксперт в области кодирования:Передача данных Tableview -> Viewcontroller
import Foundation
import UIKit
import Firebase
import FirebaseDatabase
import FirebaseAuth
struct user {
let username : String!
}
class MainScreen: UITableViewController {
var Users = [user]()
override func viewDidLoad() {
let databaseRef = FIRDatabase.database().reference()
databaseRef.child("users").queryOrderedByKey()
.observe(.childAdded, with: { snapshot in
print(snapshot)
let username = (snapshot.value as? NSDictionary)!["username"] as! String
print(username)
self.Users.append(user(username: username))
self.tableView.reloadData()
print(self.Users)
})
}
override func tableView(_ tableView: UITableView,
numberOfRowsInSection section: Int) -> Int {
return Users.count
}
override func tableView(_ tableView: UITableView,
cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell")
let nameLbl = cell?.viewWithTag(1) as! UILabel
nameLbl.text = self.Users[indexPath.row].username
return cell!
}
@IBAction func ShowDetail(_ sender: Any) {
var selectedLabel:String?
func tableView(tableView: UITableView,
didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("Row \(indexPath.row)selected")
selectedLabel = self.Users[indexPath.row].username
performSegue(withIdentifier: "detailView", sender: self)
}
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "detailView") {
let vc = segue.destination as! CallDetail
vc.stringPassed = selectedLabel!
}
}
}
И получающее ViewController выглядит следующим образом:
import UIKit
class CallDetail: UIViewController {
@IBOutlet weak var UserName: UILabel!
var stringPassed = String()
override func viewDidLoad() {
super.viewDidLoad()
UserName = stringPassed.text
}
}
то, что цель Func ShowDetail (_ отправителя: Any) метод? вы должны реализовать свой внутренний метод на том же уровне видимости класса –
Можете ли вы рассказать нам, что не работает? Например, при закрытии наблюдения печать (моментальный снимок) печатает моментальный снимок? Печатает (имя_пользователя) имя пользователя? Где вы «передаете» данные? Кажется, он хранится в массиве и затем присваивается переменной после того, как viewController в экземпляре (который не передает имя пользователя) – Jay
Привет, Джей, извините за то, что вы недостаточно точны. Единственное, с моей точки зрения, что это не работает, это передача данных. Таким образом, ярлык в новом Viewcontroller остается пустым. Я передаю данные другому контроллеру представления, и там имя пользователя должно появиться в поле метки. В сущности, я пытаюсь создать табличное представление с детальностью (деталь в Viewcontroller). –