ios - 带有多个视图的表格视图
问题描述
我是 iOS 开发的新手。如果我的问题太基本,我希望得到帮助并道歉。我刚刚习惯了UITableViewController
Delegate,DataSource。
当用户在 segmentedController 中触摸时,TableViewCell 将重新加载数据以显示正在放映的电影和即将上映的电影(只是一个简单的电影预订座位应用程序,用于我的学习目的)。
我发现多个视图存在问题。
当用户选择单元格时。
如何为每个重新加载数据分配标识符,以便在单击单元格时将数据传递给另一个 ViewController(例如:DetailViewUpcoming
和DetailViewShowing
)。在这里,我有另外两个视图控制器来记录有关即将上映的电影和正在放映的电影的详细信息。(图像、名称、日期和反向按钮......等)
如果可能的话,我只需要想法方面的帮助。或者代码描述很好。虽然我尝试在函数中实现 segue:tableview (_tableView: UITableView, didSelectRowAt indexPath: IndexPath) 但我的程序没有按预期执行。因为我在使用 segmentedControll 时遇到了问题(我认为问题就在这里)
我以前读过这篇文章
感谢你所做的一切
解决方案
您需要实现的逻辑是:
- 检查segmentedIndex 以了解用户是否希望看到Upcoming 或Showing。
- 按照步骤 1 加载带有电影的 tableView。
- 当用户点击单元格时,使用 segmentedIndex 来确定您是否应该选择 Upcoming 或 Showing 数组中的电影。
获取该电影的 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() }
在里面为movieID声明一个变量并添加一个初始化DetailViewUpcoming
器DetailViewShowing
var movieID: String?
init(movieID:String){
self.movieID = movieID
}
现在,当您加载视图时,使用上面movieID
的内容来请求电影详细信息并将它们分配给您认为合适的属性。
推荐阅读
- javascript - 找出所有包含大括号的单词
- python - python:如何使用 doc _id 检查 Elasticsearch 中是否存在文档
- r - 获取数据帧的值作为向量
- javascript - 如何在 JS API for MS365 excel labscript 中拆分单元格
- java - AsyncTask 如何将一个进程工作到另一个进程?
- r - 如何手动将线型分配给绘图中的线
- python - 如何从 pysimplegui 编写 csv 文件?
- awk - 更改第一行的输出字段分隔符
- javascript - 饼图和热图之间的自定义图表
- windows - 如何在不同的日期间隔运行 powershell 脚本函数