TableView显示问题 - Swift

时间:2017-11-23 10:03:38

标签: ios swift xcode uitableview

我在Swift中有一个表格视图,其中的标题可以展开或收缩以显示或隐藏单元格,但由于某种原因,页面中间有无额外的行分隔符,并且标题中的标签未显示起来。

enter image description here

class ExpandableHeader: UITableViewHeaderFooterView {
    var section: Int = 0
    let expandLabel = UILabel()
}

func numberOfSections(in tableView: UITableView) -> Int {
        // return number of section in table from data
        return list.count
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // return number of rows in each section from data
        return list[section].items.count + 1
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        // Create cell with the identifier which was set in the storyboard prototype cell

        // set cell data/name from our data object
        if indexPath.row < list[indexPath.section].items.count {
            let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
            cell.textLabel?.text = list[indexPath.section].items[indexPath.row].name
            return cell
        } else {
            let cell = tableView.dequeueReusableCell(withIdentifier: "custom", for: indexPath)
            return cell
        }

    }

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

    // create a header of type of our subclassed header with section number
    let headerView = ExpandableHeader()

    headerView.expandLabel.text = "+"

    headerView.expandLabel.frame.size.height = 30
    headerView.expandLabel.frame.size.width = 30
    headerView.expandLabel.textAlignment = NSTextAlignment.center

    headerView.addSubview(headerView.expandLabel)

    headerView.expandLabel.frame.origin.x = view.frame.maxX - headerView.expandLabel.frame.width

    // assign selected/current section number to the header object
    headerView.section = section

    // create Gesture Recognizer to add ability to select header to this cutsom header with an action
    let tapGesture = UITapGestureRecognizer(target: self, action: #selector(headerClicked(sender:)))

    // add Gesture Recognizer to our header
    headerView.addGestureRecognizer(tapGesture)

    return headerView
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {

    // check if row's section expanded parameter is set to true or false. set height of rows accordingly to hide or show them
    if list[indexPath.section].expanded == true {
        return 44
    } else {
        return 0
    }
}

我在上面添加了相关的代码行。当您将行高更改为0时,单元格分隔线是否也应更改为高度0或隐藏?

为什么当故事板一直到右边缘时,每个部分的标题都不会一直到屏幕的右侧? 这也是为什么标题的文本标签没有显示的原因?因为右边缘被切断了?

对不起基本问题,我仍然掌握这个问题,所以我们非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

要在代码行下面隐藏额外的行分隔符

 let backgroundView = UIView(frame: CGRect.zero)
 self.tableView.tableFooterView = backgroundView //instead of tableView give your tableView name