2011-08-12 21 views
0

テーブルビューで所定の行までスクロールします。 ボタンイベント内で次のコードを使用すると正しく動作します。IPhoneアプリケーションページがロードされたときにUITableViewの指定された位置までスクロールします

[planTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:7 inSection:0 ] atScrollPosition:0 animated:YES]; 

しかし、私はページが読み込まれた直後にやりたいです。上記のコードをviewDidLoadまたはviewDidAppearの内側に配置すると機能しませんでした。

答えて

2

UITableViewUIScrollViewのサブクラスなので、viewDidLoad:またはviewWillAppearにtableviewのcontentOffsetを設定することができます。

7つのテーブルビューのセルを下にスクロールする必要がある場合は、これら7つのセルの高さを計算します(デフォルトは44pxですが、カスタムセルの高さがある場合はそれを考慮する必要があります)。contentOffsetCGPointMake(0, *calculated height*) 。 7×44ピクセルの高さのセルの場合は、CGPointMake(0, 308)になります。

2

これはちょっとハックですが、-scrollToRowAtIndexPath:atScrollPosition:animated:をいくらか実行すると、-viewDidLoadまたは-viewDidAppear:が呼び出されたときにテーブルビューの行がまだ作成されていないためスクロールするものは何もありません。

ので:

- (void)doScrolling 
{ 
    [planTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:7 inSection:0 ] atScrollPosition:0 animated:YES]; 
} 

と-viewDidAppearで

[self performSelector:@selector(doScrolling) withObject:nil afterDelay:0.3]; 

もatScrollPositionに注意を払う:引数を。

typedef enum { 
    UITableViewScrollPositionNone, 
    UITableViewScrollPositionTop, 
    UITableViewScrollPositionMiddle, 
    UITableViewScrollPositionBottom 
} UITableViewScrollPosition; 

行が渡され、可視および0であれば、何もスクロールが実行されません

:実際enumの
関連する問題