tableview中的节索引没有节(Swift)

时间:2016-11-15 02:40:19

标签: swift

问题1:如何在没有部分的情况下在tableview中使用部分索引?

问题2:我可以为表中的特定行设置那些部分索引吗?例如:我希望每当indexpath.row>实现部分索引。 4。

3 个答案:

答案 0 :(得分:1)

  • UIKit中的表格视图始终包含部分和行。通过说你不想要一个部分,你真的说你只想要一个包含所有行的部分(在部分索引0处)(索引相对于部分索引0)。 注意:您可以轻松地创建一个没有节标题的节,在这种情况下,用户永远不会知道所有行实际上都包含在节中。

  • 实现表视图数据源时,您需要实现numberOfSectionsnumberOfRowsInSection,以便让表视图知道您想要的部分和行数。

请参阅UITableView

答案 1 :(得分:1)

我认为您的意思是仅包含一个部分(您不能没有任何部分)。这是我的操作方式:

  • 创建只是数组索引的字符串版本的索引标题。如果屏幕上显示的内容过多,iOS会跳过一些内容,并用项目符号代替它们,以明确显示未显示某些索引。您将保证索引范围与行范围相同。 (除非您有零行)。
  • 返回-1,而不是返回节索引。这将无济于事。以编程方式滚动到传入索引的ROW。
    override func sectionIndexTitles(for tableView: UITableView) -> [String]? {
        if myDataSourceArray.count > 0 {
            return Array(1...myDataSourceArray.count).map({String($0)}).map({ String($0) })
        }

        return []
    }

    override func tableView(_ tableView: UITableView, sectionForSectionIndexTitle title: String, at index: Int) -> Int {
        tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true)
        return -1
    }

(我实际上将我的最小计数设置为20,而不是零,因为当表中的所有项目都显示在屏幕上时,索引没有多大意义。但是您确实需要检查至少大于零,否则,它将尝试为没有行的表创建索引“ 1”,这将导致崩溃。)

除了数字以外,您可能还需要其他索引标题,但是希望这可以使您对如何完成操作有所了解。一旦您拥有与行不同的索引数量,就必须想出其他更复杂的方式来将索引编号或索引标题与行编号相关。

答案 2 :(得分:0)

问题1:要在没有部分的tableview中使用部分索引,可以将部分的高度设置为0。

问题2:如果indexPath.row> 4,请将section index作为:yourArray [indexPath.section]