struct Objects{
var section: String! //Section name
var cellIndex: [String] //cell index
}
var objects = [Objects]()
override func viewDidLoad() {
super.viewDidLoad()
objects = [Objects(section: "Profile", cellIndex: ["name", "gender"]), Objects(section: "Change Login", cellIndex: ["changeLogin"])]
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return objects.count
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
return objects[section].cellIndex.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath:NSIndexPath) -> UITableViewCell {
if objects[indexPath.row].cellIndex == "name" {
let cell = tableView.dequeueReusableCellWithIdentifier("profileNameCell") as!ProfileNameCell
return cell
}else
if objects[indexPath.row].cellIndex == "gender" {
let cell = tableView.dequeueReusableCellWithIdentifier("profileGenderCell") as!ProfileGenderCell
return cell
}else{
objects[indexPath.row].cellIndex == "changeLogin" {
let cell = tableView.dequeueReusableCellWithIdentifier("profileChangeLoginCell") as!ProfileChangeLoginCell
return cell
}
每个" ProfileNameCell"," ProfileNameCell"," ProfileChangeLoginCell"连接到xib文件。
上面的代码不能编译。 我阅读了代码示例,并尝试进一步研究代码,但我不知道如何插入这些代码。
通知书?非常感谢你。
编辑:
我决定直接在表视图中创建单元格,就像Vadian说的那样,并且它有效。 我曾经尝试过,但是单元组件没有连接到UiTableViewController。由于这个问题,我决定使用xib文件。现在元素正在连接。为了显示所有单元格和部分,我使用了以下代码:
struct Cells{
var section: String!
var rows: [String]!
}
var tableStructure: [Cells] = []
override func viewDidLoad() {
super.viewDidLoad(
tableStructure = [Cells(section: "One", rows: ["1", "2", "3", "4", "5"]), Cells(section: "Two", rows: ["1"]), Cells(section: "Three", rows: ["1", "2"])]
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return tableStructure.count
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tableStructure[section].rows.count
}
答案 0 :(得分:0)
var cellIndex: String //cell index
objects = [Objects(section: "Profile", cellIndex: ["name"]),Objects(section: "Profile", cellIndex: ["gender"]), Objects(section: "Change Login", cellIndex: ["changeLogin"])]
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
return objects.count
}
如果你想为你的tableview提供3个自定义单元格,请尝试这个
答案 1 :(得分:0)
每个部分都包含行,因此当UITableViewDelegate
在cellforRowAtIndexPath
中提出要求时,需要以下结构:
Section 1
Row1
Row2
Row3
Section 2
Row1
Row2
...
因此每个Section都包含一些行,每行/每个部分都可以有不同的单元格布局/类。
所以你不需要xib
每个单元格的布局(使用故事板时) - 只需在UITableView
或UITableViewController
内制作一些不同的布局,然后将IBOutlets
连接到具体的UITableViewCell
类。
现在您应该具有以下结构,如上所述。
let cellObjects = [ClassForSection: [ClassForRow]]()
然后你可以使用:
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return cellObjects.count
}
和
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath:NSIndexPath) -> UITableViewCell {
let currentRowItem = cellObjects[indexPath.section][indexPath.row]
// so you have an specific object for every cell
}