0

セクションのあるテーブルビューがあります。各セクションは月です。だから私は6月、7月、8月のセクションを持っています...

私が今やりたいことは、テーブルビューが表示されたら、すぐに今日の月までスクロールすることです。そのために次の機能があります。

-(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];

}

私が月 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

編集:スクリーンショット

ここでは、スクロール後にテーブルビューがどのように見えるかのスクリーンショットを見ることができます。スクリーンショット

4

1 に答える 1

0

問題は、セクション インデックスが1ではなく0から始まることです。

したがって、返された月が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 - 5month - 6、必要に応じて機能するはずです。

ところで、次のように現在の月を取得するようにコードを変更することをお勧めします。

NSDate *now = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM"];
int month = [[dateFormatter stringFromDate:now] intValue];
//...
于 2012-11-02T11:09:26.930 に答える