2017-07-02 93 views
0

我知道标题有点模棱两可,所以让我解释一下。我有两个TableViewControllers,称为MainTableViewControllerDetailTableViewController。此外,我多个阵列创建的,这在想法是通过层级连接:连接两个相关的TableViewController数组

let maincCarChoice = ["Toyota", "Nissan", "Ford"] 

let toyotaCarChoice = ["Prius", "Camry", "Etios"] 
let nissanCarChoice = ["Altima", "Maxima", "Rogue"] 
let fordCarChoice = ["Fusion", "Focus", "Explorer"] 

我已成功地填充MainTableViewControllermainCarChoice阵列和实现,当三个选项中的一个被触摸的segue,去到DetailTableViewController。这就是说,但是,我不确定如何填充DetailTableViewController与各自的数组取决于用户在MainTableViewController的选择。任何帮助将不胜感激,并提前感谢您。为实现这一

+0

你应该有一个数据从maincCarChoice映射到toyotaCarChoice,nissanCarChoice等。然后根据映射,分配单个数组。 – adev

+0

你好,对不起,我是编程新手。你介意给我解释一下数据映射是什么,或者把链接发给我可以阅读的地方? –

+0

检查@Moe Abdul-Hameed的答案。这是做到这一点的一种方式。 – adev

回答

2

的一种方法是通过增加串构件的阵列以DetailTableViewController像这样:

var vehiclesArray: [String]?

此数组应该发挥作为内部DetailTableViewController表视图的数据源。

现在,里面MainTableViewController

首先,添加携带汽车品牌和型号的字典:

var vehiclesDictionary = ["Toyota" : ["Prius", "Camry", "Etios"], 
          "Nissan" : ["Altima", "Maxima", "Rogue"], 
          "Ford" : ["Fusion", "Focus", "Explorer"]] 

然后覆盖prepare方法是这样的:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if segue.identifier == "YourIdentifier" { 
      if let indexPath = self.tableView.indexPathForSelectedRow { 
       let selectedVehicle = vehicles[indexPath.row] 

      if let nextScene = segue.destination as? DetailTableViewScene { 
       nextScene.vehiclesArray = self.vehiclesDictionary[selectedVehicle] 
      } 
     } 
    } 
} 
+1

这也可以是这个类中的字典映射,其中键为“丰田”,值为数组。那么这个功能可以简化。 – adev

+0

你是对的,谢谢!我更新了代码以反映您的建议。 –

+0

太棒了,已经提高了你的答案。 – adev