Swift:有没有办法省略某些节标题单元格?

时间:2015-11-16 15:51:16

标签: ios swift uitableview cocoa-touch

我有一个字典,它将是我的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
}

}

这就是我得到的:

enter image description here

我的第一个想法是在我的字典中创建另一条记录,并在

中使用if-statement忽略它
  

func tableView(tableView:UITableView,titleForHeaderInSection section:Int) - &gt;字符串?

但这不是正确的解决方案,因为它不断返回一个额外的空节头。

如何制作tableView&#34;省略&#34;某些章节标题?

提前致谢

PS。我发现很难正确地命名这个帖子,如果你知道如何以更相关的方式命名它,可以随意编辑这个问题的标题。

1 个答案:

答案 0 :(得分:3)

您可以实现UITableViewDelegate方法,该方法返回要隐藏的标题返回0的标题的高度:

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat

这是reference

正如文档中所述,由于iOS5返回空标题视图或空标题不再导致不可见的标题。

请注意,这将要求您返回要显示的部分的默认高度。