我有一个字典,它将是我的tableView的数据源。
但是,我想添加其他不属于字典的单元格,这意味着它们不应该位于来自字典的节标题下。
为了让您更好地了解我想要实现的目标,我创建了这个示范项目here
这是ViewController的实现,我试图尽量缩短它:
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
let dict2:Dictionary<String,[String]> = ["SECTION1":["This should be under section", "This should be under section too"]]
var dictKeysSorted:[String] = []
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
dictKeysSorted = dict2.keys.sort()
self.tableView.delegate = self
self.tableView.dataSource = self
// Do any additional setup after loading the view, typically from a nib.
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return (dict2 as NSDictionary).objectForKey(dictKeysSorted[section])!.count + 1
}
func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return dictKeysSorted[section]
}
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 30.0
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return dictKeysSorted.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: CustomCell = tableView.dequeueReusableCellWithIdentifier("cell") as! CustomCell
if indexPath.row == 0
{
cell.label.text = "This cell should be above section"
}
else
{
cell.label.text = (dict2 as NSDictionary).objectForKey(dictKeysSorted[indexPath.section])![indexPath.row-1] as? String
}
return cell
}
}
这就是我得到的:
我的第一个想法是在我的字典中创建另一条记录,并在
中使用if-statement忽略它func tableView(tableView:UITableView,titleForHeaderInSection section:Int) - &gt;字符串?
但这不是正确的解决方案,因为它不断返回一个额外的空节头。
如何制作tableView&#34;省略&#34;某些章节标题?
提前致谢
PS。我发现很难正确地命名这个帖子,如果你知道如何以更相关的方式命名它,可以随意编辑这个问题的标题。
答案 0 :(得分:3)
您可以实现UITableViewDelegate
方法,该方法返回要隐藏的标题返回0
的标题的高度:
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
这是reference。
正如文档中所述,由于iOS5返回空标题视图或空标题不再导致不可见的标题。
请注意,这将要求您返回要显示的部分的默认高度。