ios - 带有 Segues 到多个 View 的 TableView

标签 ios swift uitableview segue

我是 iOS 开发新手。如果我的问题太基本,我希望得到帮助并道歉。 我刚刚开始习惯 UITableViewController 和 Delegate、DataSource。

我有像照片一样的FirstViewController enter image description here

当用户触摸 segmentedController 内部时,TableViewCell 将重新加载数据以显示正在放映的电影和即将上映的电影(只是一个简单的电影预订座位应用程序,供我学习使用)。

enter image description here

我看到一个问题是转至多个 View 。
当用户选择单元格时。
我如何为每个重新加载数据分配标识符,以便当我单击单元格时,数据被传递到另一个 ViewController(例如:DetailViewUpcomingDetailViewShowing)。这里我有另外两个 View Controller 来记录有关即将上映的电影和正在播放的电影的详细信息。(图像、名称、日期和倒车按钮....等)

enter image description here

如果可能的话,我只是需要一些想法方面的帮助。或者代码说明很好。虽然我尝试在 function: tableview (_tableView: UITableView, didSelectRowAt indexPath: IndexPath) 中实现 segue 但我的程序没有按预期执行。因为我在使用 segmentedControll 时遇到了问题(我认为问题出在这里)

我读过这个post之前

谢谢大家

最佳答案

你需要实现的逻辑是:

  1. 检查 segmentedIndex 以了解用户是想看到即将到来的还是正在显示的。
  2. 按照第 1 步用电影加载 tableView。
  3. 当用户点击单元格时,使用 segmentedIndex 来确定您是否应该从即将上映或正在放映的数组中选择电影。
  4. 获取该电影的 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()
    }
    

DetailViewUpcomingDetailViewShowing 中为 movieID 声明一个变量并添加一个初始化程序

var movieID: String?

init(movieID:String){
 self.movieID = movieID
}

现在,当您加载 View 时,使用上面的 movieID 请求电影详细信息并将它们分配给您认为合适的属性。

关于ios - 带有 Segues 到多个 View 的 TableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52734356/

相关文章:

ios - 如何在ios上实现RabbitMq?

ios - 淡出循环动画

ios - 快速更新已编辑 TextView 的问题

swift - 如何在 Swift 中创建静态类?

Swift - UISwitch 作为两个值之间的选择器?

ios - 是否可以使用 reuseIdentifier 自定义具有不同内容的 TableViewCells?

swift - 在 Swift 中听标准输入

ios - 以编程方式将按钮对齐到 UITableView 单元格的左侧

ios - UIlabel 使用大量内存和大量文本

iphone - "Reuse"UITabBarController 中的 UITableViewController