我正在创建一个应用程序,其中包含我使用JSON提取的用户的表视图。表视图填充了我想要的所有信息,但我只是在做基本信息。我想要发生的是用户将点击一个表视图单元格,它将把它们带到另一个视图控制器,在该视图控制器中将有一个更详细的配置文件视图。在我的JSON中,当表视图最初加载像UserID等时,我得到所有用户信息,并且我想将该用户ID与每个单独的表格单元相关联,这样当它们被单击时我可以在下一个运行php脚本窗口,用于显示表格中用户的个人资料。
答案 0 :(得分:0)
我通常这样做的方法是首先将JSON映射到模型对象,并使用表数据源中的那些模型对象来填充表视图。当点击一个单元格时,我进行反向映射(从单元格到模型对象),并且可以将模型对象(或模型对象的信息的子集)转发到prepare(for:sender:)
中的下一个视图控制器。为了实现这一点,我在Interface Builder中设置了单元格,以便在选择时触发细节视图控制器。
示例代码:
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
}
}