2017-07-02 90 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