我是 iOS 开发新手。如果我的问题太基本,我希望得到帮助并道歉。
我刚刚开始习惯 UITableViewController
和 Delegate、DataSource。
当用户触摸 segmentedController 内部时,TableViewCell 将重新加载数据以显示正在放映的电影和即将上映的电影(只是一个简单的电影预订座位应用程序,供我学习使用)。
我看到一个问题是转至多个 View 。
当用户选择单元格时。
我如何为每个重新加载数据分配标识符,以便当我单击单元格时,数据被传递到另一个 ViewController(例如:DetailViewUpcoming
和 DetailViewShowing
)。这里我有另外两个 View Controller 来记录有关即将上映的电影和正在播放的电影的详细信息。(图像、名称、日期和倒车按钮....等)
如果可能的话,我只是需要一些想法方面的帮助。或者代码说明很好。虽然我尝试在 function: tableview (_tableView: UITableView, didSelectRowAt indexPath: IndexPath) 中实现 segue 但我的程序没有按预期执行。因为我在使用 segmentedControll 时遇到了问题(我认为问题出在这里)
我读过这个post之前
谢谢大家
最佳答案
你需要实现的逻辑是:
- 检查 segmentedIndex 以了解用户是想看到即将到来的还是正在显示的。
- 按照第 1 步用电影加载 tableView。
- 当用户点击单元格时,使用 segmentedIndex 来确定您是否应该从即将上映或正在放映的数组中选择电影。
获取该电影的 ID 并将其发送到相应的 DetailsViewController。现在您有了 movieID,可以使用它从数据库中请求电影详细信息。
func tableView(_ tableView:UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { guard let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell") as? TableViewCell else { return UITableViewCell() } switch segmentedControl.selectedSegmentIndex { case 0: //handle the set up of Upcoming cells case 1: //handle the setup of Showing cells default: break } return cell } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { switch segmentedControl.selectedSegmentIndex { case 0: let DetailViewUpcoming = self.storyboard?.instantiateViewController(withIdentifier: "DetailViewUpcoming") as! DetailViewUpcoming DetailViewUpcoming.init(forMovie: upcomingArray[indexPath.row].movieID) self.navigationController?.pushViewController(DetailViewUpcoming, animated: true) case 1: let DetailViewShowing = self.storyboard?.instantiateViewController(withIdentifier: "DetailViewShowing") as! DetailViewShowing DetailViewShowing.init(forMovie: showingArray[indexPath.row].movieID) self.navigationController?.pushViewController(DetailViewShowing, animated: true) default: break } } @IBAction func segmentedTapped(_ sender: Any) { tableView.reloadData() }
在 DetailViewUpcoming
和 DetailViewShowing
中为 movieID 声明一个变量并添加一个初始化程序
var movieID: String?
init(movieID:String){
self.movieID = movieID
}
现在,当您加载 View 时,使用上面的 movieID
请求电影详细信息并将它们分配给您认为合适的属性。
关于ios - 带有 Segues 到多个 View 的 TableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52734356/