在Swift中的UITableView部分获取行的[NSIndexPath]数组

时间:2016-03-04 03:39:09

标签: ios swift uitableview

我在tableView(第1部分)中有一部分行,我需要为该部分中的所有行初始化[NSIndexPath]数组。

我知道我可以很容易地计算该部分中的行数:

let rowsInSection = tableView.numberOfRowsInSection(1)

但这只能得到行数,而不是索引路径。

什么是最干净,最像" Swift-like"检索索引路径的方法?

我正在寻找的一个例子:

func indexPathsForRowsInSection(section: Int) -> [NSIndexPath] {
    // magic happens here
    return indexPathsForRowsInSection
}

4 个答案:

答案 0 :(得分:8)

像Swift 3中的这样:

func indexPathsForRowsInSection(_ section: Int, numberOfRows: Int) -> [NSIndexPath] {
    return (0..<numberOfRows).map{NSIndexPath(row: $0, section: section)}
}

答案 1 :(得分:4)

我不知道你为什么要这样,但你可以这样做:

let paths = (0..<tableView.numberOfRowsInSection(section)).map { NSIndexPath(forRow: $0, inSection: section) }
return paths

答案 2 :(得分:0)

这是基于Vincent和Matt答案的UITableView的简洁Swift 3扩展:

extension UITableView {
    func indexPathsForRowsInSection(_ section: Int) -> [NSIndexPath] {
        return (0..<self.numberOfRows(inSection: section)).map { NSIndexPath(row: $0, section: section) }
    }
}

// usage
tableView.indexPathsForRowsInSection(aNumber)

答案 3 :(得分:0)

 let section = 1
 let numberOfRows = 15

 let indexPaths = (0..<numberOfRows).map { i in return 
                                          IndexPath(item:i, section: section)  
                                         }