2012-01-04 8 views
0

私はUITableViewを左に、カスタムビューを詳細ビューとして持つUISplitViewControllerを持っています。 UISplitViewControllerが読み込まれると、詳細ビ​​ューでTableViewの最初の要素を選択して表示します。現在、私は、テーブルビューviewDidLoadでこれをしようとしている:UISplitViewController:TableViewの最初の行をロード

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [self tableView:self.tableView didSelectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]; 
} 

これはほぼ現在の行は、それがユーザによって選択されたときのように強調表示されていないことを除いて、動作します。これを行うより良い方法はありますか?

答えて

1

didSelectRowAtIndexPath:に電話をかけてはいけません。あなたが意図していた方法は、selectRowAtIndexPath:animated:scrollPosition:

別の方法をデフォルトビューとして使用して、詳細ビューに何かを表示することを検討することができます。例えば、- (void)displayObject:(NSObject *)objectToDisplay。これは、あなたのdidSelectRowAtIndexPathで呼び出すことができますが、そのメソッド外の実際のロジックを移動することによって、viewDidLoadやviewWillAppearなどの他の場所で呼び出すことができます。また、表示するオブジェクト(単純な配列を扱う場合)を探し出し、それをそのまま表示することもできます。

3

[UITableView selectRowAtIndexPath:animated:scrollPosition:]はどうですか? このようなものです。

[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionTop] 

didSelectRow...

は、コールバックメソッドであり、このように使用されるものではありません。

関連する問題