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

标签 ios swift uitableview firebase

我有一个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/

相关文章:

ios - 以编程方式越界 UIView 约束

ios - 在 Objective-C 中解析 JSON 数组

ios - 如何让ios UI元素在 View 切换回来时保持 "origninal"元素?

ios - 自定义单元格按钮标签始终返回零

iphone - 如何使部分的 UITableView 页脚不粘

ios - Swift Socket.io连接后立即发送的事件未执行

ios - 跟踪短信和电话的负载

ios - 在 Firebase 中更新值后更新 TableView

json - 无法在 Swift 中下标 AnyObject 类型的值

ios - 有没有办法检测 TableView 中索引部分的选择?