我跟随你们的有用评论并且目前已经走到了这一步:我有一个带有标题单元格的TableView。现在的问题是我只能显示一组数据而且TableView当前不会滚动(可能是因为只显示了一组数据。)
这是我的代码:
的ViewController:
struct TableData {
var section: String = ""
var data = Array<String>()
var dataS = Array<String>()
init(){}
}
var data = Array<TableData>()
var dataS = Array<TableData>()
class MyCustomCell: UITableViewCell {
@IBOutlet var label: UILabel!
@IBOutlet var labelS: UILabel!
}
class MyCustomHeader: UITableViewCell {
@IBOutlet var header: UILabel!
}
class TypeViewController: BaseViewController , UITableViewDelegate, UITableViewDataSource {
@IBOutlet var tableView: UITableView!
@IBOutlet var scrollView: UIScrollView!
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data[section].data.count
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! MyCustomCell
cell.label.text = data[indexPath.section].data[indexPath.row]
cell.labelS.text = dataS[indexPath.section].data[indexPath.row]
return cell
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerCell = tableView.dequeueReusableCell(withIdentifier: "Header") as! MyCustomHeader
headerCell.header.text = data[section].section
return headerCell
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 50.0
}
override func viewDidLoad() {
super.viewDidLoad()
addSlideMenuButton()
addItems()
print(data)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func addItems() {
var new_elements:TableData
new_elements = TableData()
new_elements.section = "Stuff"
new_elements.data.append(obj41);
new_elements.data.append(obj42);
new_elements.data.append(obj43);
new_elements.data.append(obj44);
new_elements.data.append(obj45);
new_elements.data.append(obj46);
new_elements.data.append(obj47);
data.append(new_elements)
new_elements = TableData()
new_elements.section = "More Stuff"
new_elements.data.append(obj51);
new_elements.data.append(obj52);
new_elements.data.append(obj53);
new_elements.data.append(obj54);
new_elements.data.append(obj55);
new_elements.data.append(obj56);
new_elements.data.append(obj57);
data.append(new_elements)
new_elements = TableData()
new_elements.section = "Netzach - Eternity"
new_elements.data.append(obj61);
new_elements.data.append(obj62);
new_elements.data.append(obj63);
new_elements.data.append(obj64);
new_elements.data.append(obj65);
new_elements.data.append(obj66);
new_elements.data.append(obj67);
data.append(new_elements)
//Break
new_elements = TableData()
new_elements.data.append(objS0);
new_elements.data.append(objS1);
new_elements.data.append(objS2);
new_elements.data.append(objS3);
new_elements.data.append(objS4);
new_elements.data.append(objS5);
new_elements.data.append(objS6);
new_elements.data.append(objS7);
dataS.append(new_elements)
new_elements = TableData()
new_elements.data.append(objS11);
new_elements.data.append(objS12);
new_elements.data.append(objS13);
new_elements.data.append(objS14);
new_elements.data.append(objS15);
new_elements.data.append(objS16);
new_elements.data.append(objS17);
dataS.append(new_elements)
new_elements = TableData()
new_elements.data.append(objS21);
new_elements.data.append(objS22);
new_elements.data.append(objS23);
new_elements.data.append(objS24);
new_elements.data.append(objS25);
new_elements.data.append(objS26);
new_elements.data.append(objS27);
dataS.append(new_elements)
}
&#13;
附上了MainStoryboard的一些照片:
答案 0 :(得分:2)
请注意以下与UITableView
UITableView
继承了UIScrollView
的属性,即UITableView
也低于UIScrollView
,因此您无需UIScrollView
特别滚动UITableView
。如果你这样做会表现得很奇怪。
在cellForRow
中,您正在使用参数tableView
创建条件typeView
&amp; typeView1
通过比较不是标准格式的标记。因为tableView.tag
可能会更改并导致错误的输出。因此,请尝试使用以下格式
if tableView == typeView { }
else { } //tableView == typeView1
将UITableView
个对象与pram tableView
进行比较。
cellForRow
方法会从cell
返回if-else
,因此您无需撰写
return UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "Cell")
如果我调试你的cellForRow
方法代码,那么上面这行就永远不会执行。
首先尝试此标准并删除您的错误,然后发布您面临的问题和问题。
希望我的上述工作可以帮助你。
修改
您需要的输出将如下图所示。您不需要在单UItableView
中使用2 tableview
和scrollview
。您可以使用一个tableView
执行相同操作。
完成此tutorial