我有一个分段的桌面视图。每个部分都是一个月。所以我的部分是6月,7月,8月......
我现在要做的是当tableview显示时,它会立即滚动到今天的月份。我有以下功能。
-(void)scrollToPosition{
NSDate *now = [NSDate date];
NSString *strDate = [[NSString alloc] initWithFormat:@"%@",now];
NSArray *arr = [strDate componentsSeparatedByString:@" "];
NSString *str;
str = [arr objectAtIndex:0];
NSLog(@"strdate: %@",str); // strdate: 2011-02-28
NSArray *arr_my = [str componentsSeparatedByString:@"-"];
NSInteger month = [[arr_my objectAtIndex:1] intValue];
NSLog(@"month - 5 %d",month -5);
NSIndexPath *path = [NSIndexPath indexPathForRow:1 inSection:month -5];
NSLog(@"path = %@",path);
[self.tableView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
}
我 month-5 的原因是我的桌面视图从6月份开始。我的问题是,它向下滚动到该部分的最后一行而不是第一行。有人能帮助我吗?
亲切的问候,
修改
My tableview looks likes this.
---Section 1: June -----
- row 1 (12-06-2012)
- row 2 (14-06-2012)
- row 3 (20-06-2012)
- row 4 (22-06-2012)
---Section 2: July -----
- row 1 (2-07-2012)
- row 2 (14-07-2012)
- row 3 (21-07-2012)
- row 4 (27-07-2012)
---Section 3: August -----
- row 1 (2-08-2012)
- row 2 (14-08-2012)
---Section 4: September -----
- row 1 (17-09-2012)
---Section 5: Oktober -----
- row 1
- row 2
- row 3
- row 4
---Section 6: November -----
- row 1
- row 2
- row 3
- row 4
---Section 7: December -----
- row 1
- row 2
- row 3
---Section 8: January -----
- row 1
- row 2
编辑:截图
在这里,您可以看到滚动后我的tableview的外观截图。 Screenshot
答案 0 :(得分:0)
问题是,部分索引从 0 开始,而不是 1 。
因此,如果您的退回月份 6 您的来电:
NSIndexPath *path = [NSIndexPath indexPathForRow:1 inSection:1]; // month - 5 = 1
[self.tableView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
但你应该致电:
NSIndexPath *path = [NSIndexPath indexPathForRow:1 inSection:0];
因此,您滚动到实际想要滚动到的部分<1> 部分。这就是为什么它似乎会滚动到上一节的最后一行。
将month - 5
替换为month - 6
,它应该可以正常使用。
顺便提一下,我建议修改你的代码以检索当前月份:
NSDate *now = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM"];
int month = [[dateFormatter stringFromDate:now] intValue];
//...