gpt4 book ai didi

ios - swift 3 : Pass String from TableViewController to another TableViewController

转载 作者:行者123 更新时间:2023-11-30 12:47:56 27 4
gpt4 key购买 nike

我有一个UITableViewController在列表中显示 Firebase 中的所有用户。如果您点击一个用户,您会看到另一个 UITableViewController使用界面生成器中准备的静态 TableView 布局来编辑用户属性。我想将所选用户的UID传递给DetailTableViewController加载所有当前用户数据。

编辑:这个问题并不完全重复。我想传递来自 UITableViewController 的数据到另一个UITableViewController不是一个正常的详细信息UIViewController !

这是我当前的第一个TableViewController的代码.

有人可以帮助我吗?我不明白。

UserListTableViewController.swift:

import UIKit
import Firebase
import FirebaseAuth
import FirebaseDatabase

class UserListTableViewController: UITableViewController {

var dbRef:FIRDatabaseReference!
var user = [User]()

var writeSelectedUID:String!
var selectedUID: String = "Mister X"

override func viewDidLoad() {
super.viewDidLoad()
}

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.startObservingDB()
}

func startObservingDB () {
dbRef.observe(.value, with: { (snapshot:FIRDataSnapshot) in
var newUser = [User]()

for user in snapshot.children {
let userObject = User(snapshot: user as! FIRDataSnapshot)
newUser.append(userObject)
}
self.user = newUser
self.tableView.reloadData()
}) { (error:Error) in
print(error.localizedDescription)
}
}

// MARK: - Table view data source
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return user.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "User Cell", for: indexPath) as! CustomUserListTableViewCell

// Configure the cell
let userRow = user[indexPath.row]
cell.userFirstLastNameLabel?.text = "\(userRow.firstName!) \(userRow.lastName!)"
cell.userUsernameLabel?.text = "@\(userRow.username!)"
}
return cell
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
//let selectedUID = user[indexPath.row]
let selectedUserRow = user[indexPath.row]
self.writeSelectedUID = "\(selectedUserRow)"
performSegue(withIdentifier: "editUser", sender: self)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
let viewcontroller = segue.destination as! ManageUserSettingsTableViewController
// Pass the selected object to the new view controller.

if(segue.identifier == "editUser") {
viewcontroller.usernameTextField.text! = "\(self.writeSelectedUID)"
print("Var: \(self.writeSelectedUID)")
}
}
}

最佳答案

在 UserListTableViewController.swift 中:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
let viewcontroller = segue.destination as! ManageUserSettingsTableViewController
// Pass the selected object to the new view controller.

//let object = self.writeSelectedUID as? String
// let object = self.writeSelectedUID as! String!

if(segue.identifier == "editUser") {
if let object = self.writeSelectedUID {
viewcontroller.detailItem = object as AnyObject?
}
}
}

在你的 AnotherViewController 中:

var detailItem: AnyObject?

usernameTextField.text = detailItem?.description

关于ios - swift 3 : Pass String from TableViewController to another TableViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41383005/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com