如何将特定用户 ID 与特定表视图单元格相关联



我正在创建一个应用程序,该应用程序具有我使用JSON下拉的用户表视图。表视图填充了我想要的所有信息,但我只是在做基本信息。我想发生的是用户将单击表视图单元格,它将他们带到另一个视图控制器,在该视图控制器中将有一个更详细的配置文件视图。在我的 JSON 中,当表视图最初加载时,我会获取所有用户信息,例如 UserID 等,并且我想将该用户 ID 与每个单独的表单元格相关联,以便单击它们时我可以在下一个窗口中运行 php 脚本以显示表中用户的配置文件。

我通常这样做的方法是首先将 JSON 映射到模型对象,然后使用表数据源中的这些模型对象来填充表视图。当点击单元格时,我执行反向映射(从单元格到模型对象(,并且可以将模型对象(或模型对象信息的子集(转发到prepare(for:sender:)中的下一个视图控制器。为了实现这一点,我在界面生成器中设置了单元格,以便在选择时触发对详细信息视图控制器的 segue。

示例代码:

struct User
{
    let id: String
    let name: String
    // etc.
}
class YourTableViewController: UITableViewController
{
    var users: [User] = []
    override func viewDidLoad() {
        super.viewDidLoad()
        let json = getJSON()
        users = createUsers(from: json)
    }
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Check segue.identifier, left out for brevity.
        let destination = segue.destination as! YourDetailsViewController
        let cell = sender as! UITableViewCell
        let indexPath = tableView.indexPath(for: cell)!
        let user = users[indexPath.row]
        destination.user = user
    }
    // ... other funcs for table view ...
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let user = users[indexPath.row]
        // dequeue cell, set up with info from user, return it
    }
}

最新更新