首先,使用plist存儲此類內容很少見。不容易維護。使用XML或json來存儲它是更好的選擇。
問候你的問題#1,
把下面的代碼到一個循環,你的plist中加載到這樣一個字典:
let path = NSBundle.mainBundle().pathForResource("Your_path", ofType: "plist")
let dict = NSDictionary(contentsOfFile: path!)
您可能希望所有類型的字典存儲到一個數組,所以你知道你有多少plist。假設我們在您的視圖控制器中擁有dictArray
屬性來容納所有的字典。
您不在UITableView的SB上添加靜態單元,效率不高。您只需讓dataSource委託加載數據並創建儘可能多的單元即可。
我會留下一些代碼給你寫,這會讓你溫暖起來。我只是給出了代碼的基本部分。
不要忘記將您的dataSource和委託設置爲適當的對象,如self
!
然後,
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dictArray.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier(textCellIdentifier, forIndexPath: indexPath) as UITableViewCell
let row = indexPath.row
let dictOfPlist = self.dictArray[row]
// now you get your plist while configuring your cells,
// do your customization for your cells from now on
return cell
}
// MARK: UITableViewDelegate Methods
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let row = indexPath.row
let dictOfPlist = self.dictArray[row]
// if you tap one cell, now you get its corresponding plist
// time to pass the data to your view controller
// either use segue or other ways to do it
}
}
將數據傳遞到您的新的UIViewController一些方法:
如果Segue公司在與2次之間的賽格瑞標識故事板的存在,你可以把它編程使用:
performSegueWithIdentifier("mySegueID", sender: yourDataDict)
後,你可以在你的nextViewController
訪問yourDataDict加載它
你也可以這樣做:
nextViewController.dataDict = yourDataDict // set a public property so you can access it later on
presentViewController(nextViewController, animated: true, completion: nil)
或者,如果你是在一個導航控制器:
self.navigationController?.pushViewController(nextViewController, animated: true)
要鞏固您的Plist到一個plist中,您可能需要編寫一些小程序或腳本合併它們;或複製它們。有很多方法可以做到這一點。但正如我所建議的那樣,我不建議你繼續使用plist來做這樣的事情。開始時你最好換成另一種形式。否則,當你意識到你真的需要改變時,已經太晚了,你有很多代碼要重寫。
問題是什麼? – matt
而不是從.plist加載數據,如何從JSON/XML加載?屬性列表很少以這種方式使用。 – Raptor
@matt超越自我,更新。 – DiscoveryOV