我开始编程Swift
我有一个问题,我不知道如何解决。
我制作了 Plist文件:
<dict>
<key>Vegetables</key>
<array>
<string>Pepper</string>
<string>Tomato</string>
<string>Cucumber</string>
</array>
<key>Fruits</key>
<array>
<string>Apple</string>
<string>Banana</string>
<string>Watermelon</string>
</array>
</dict>
现在我要在TableView
的根目录(Dictionary)中显示所有数组(水果和蔬菜),以便每个数组名称(Key)都是独立的
Section和每个String在我的TableView
中都是一行。
这里是我的视图控制器类:
import UIKit
//I add TableView methods
class ViewController : UIViewController , UITableViewDelegate ,UITableViewDataSource {
override func viewDidLoad(){
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// return number of section in my case it's two section (fruits and vegetables)
return 1;
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// number of row in every section is three
// I want to do something like Array.count
return 1;
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let row : UITableViewCell = UITableViewCell();
//Add every Row
return row;
}
func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
// Here i want to add header to every section i made;
// Header Name = Array (key) Fruit/Vegetables
// How i do this ?
return "";
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
}
}
答案 0 :(得分:2)
字典不适合作为表视图的数据源,因为它们是无序的。我建议你创建一个包含你的部分的外部数组。对于每个部分,添加包含标题和项目数组的字典。
或者,您可以创建一个具有标题和项目条目的自定义部分结构,并创建一个部分结构数组。
答案 1 :(得分:0)
写下面的代码,你会得到答案,
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource
{
var listDic : NSMutableDictionary = NSMutableDictionary()
var headerArr : NSMutableArray = NSMutableArray()
@IBOutlet var tblList : UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.loadData()
self.navigationController?.navigationBar.translucent = true
self.navigationController?.navigationBar.tintColor = UIColor.grayColor()
}
func loadData()
{
if let path = NSBundle.mainBundle().pathForResource("test", ofType: "plist") // Rename with your plist file name
{
self.listDic = NSMutableDictionary(contentsOfFile: path)! // NSMutableArray(contentsOfFile: path)!
}
if(self.listDic.count > 0)
{
self.headerArr.addObjectsFromArray(self.listDic.allKeys)
}
self.tblList.reloadData()
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return self.headerArr.count
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let arr = self.listDic.valueForKey(self.headerArr.objectAtIndex(section) as! String) as! NSMutableArray
return arr.count
}
func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return self.headerArr.objectAtIndex(section) as? String
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: .Default, reuseIdentifier: "Cell")
let arr = self.listDic.valueForKey(self.headerArr.objectAtIndex(indexPath.section) as! String) as! NSMutableArray
cell.textLabel?.text = arr.objectAtIndex(indexPath.row) as? String
return cell
}
}
这是基于您的plist文件并且工作正常。
希望这会对你有所帮助。