使用section减少indexPath

时间:2014-12-11 13:02:42

标签: ios objective-c iphone cocoa-touch uitableview

我有UITableView部分,我想知道给定IndexPath的上一项,我知道我可以使用此

NSIndexPath* newIndexPath = [NSIndexPath indexPathForRow:oldIndexPath.row -1 inSection:oldIndexPath.section];

如果我只有一个部分,但由于我有几个部分,我怎么能知道tableview中的前一个项目(如果该项目在他的部分中是第一个,我想获得上一部分的最后一项。< / p>

感谢。

2 个答案:

答案 0 :(得分:2)

如果(row-1)小于0,则从section中减去1。 如果(section-1)也小于0,那么你就在表的顶部。否则,找到该部分的最后一行。 您必须拥有该信息,因为您将其提供给表格视图。

答案 1 :(得分:2)

我认为你可以使用类似的东西:(如果你在接收self.tableView对象作为参数的方法中使用此代码,则只用tableView替换UITableView

NSIndexPath* newIndexPath = nil;
// check for row being the first one in this section
if (oldIndexPath.row == 0) {
    // check for this section having a previous section
    if (oldIndexPath.section > 0) {
        // get number of rows of the previous section
        NSInteger numberOfRows = [self.tableView numberOfRowsInSection : oldIndexPath.section - 1];
        newIndexPath = [NSIndexPath indexPathForRow: numberOfRows - 1 inSection: oldIndexPath.section - 1];
    }
} else { // if the row is not the first in this section
    // get the indexPath for the previous row in this section
    newIndexPath = [NSIndexPath indexPathForRow:oldIndexPath.row - 1 inSection: oldIndexPath.section];
}