我有UITableView
部分,我想知道给定IndexPath
的上一项,我知道我可以使用此
NSIndexPath* newIndexPath = [NSIndexPath indexPathForRow:oldIndexPath.row -1 inSection:oldIndexPath.section];
如果我只有一个部分,但由于我有几个部分,我怎么能知道tableview中的前一个项目(如果该项目在他的部分中是第一个,我想获得上一部分的最后一项。< / p>
感谢。
答案 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];
}