2012-05-04 5 views
0

私は一意のデータ(例:タイトル/詳細)に関連付けられた複数のセル(詳細開示)を持つTableViewControllerを持っています。別のViewControllerがモーダルまたはプッシュセグを使ってロードされたセルの1つをクリックすると、どのセルがクリックされたかによってデータが表示されます。TableViewControllerのセル(Disclosure Detail)から次のViewControllerにデータをロード(選択/クリックされたセルの値)する方法は?

シンプルな例:

TableViewControllerの各セルは個別のURLをassociaedされています。セルの1つ(詳細の開示)をクリックすると、WebViewを含む次のViewControllerは、クリックされたセルのURLに対応するWebページを開く必要があります。

どうすれば実現できますか?

答えて

1

一つの方法は、prepareForSegueメソッド内で、次を使用することです:

NSIndexPath *indexPath = tableView.indexPathForSelectedRow; 

これは与えますユーザーが選択した項目がわかるように、テーブルの選択された行(セル)へのアクセス権を与えます。

次に、必要なデータを抽出して、他の回答に示されているようにprepareForSegueメソッドを使用して宛先ビューコントローラに渡します。

1

まず、各セグの識別子を設定する必要があります(ストーリーボードでは、セグをクリックして属性インスペクタで設定します)。

はその後、あなたのUITableViewControllerのサブクラスでは、あなたはprepareForSegueをオーバーライドする必要があります。データにアクセスする

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"yourSegueIdentifier"]) { 
     UIViewController *viewController = segue.destinationViewController; 
     viewController.yourVariable = yourData; 
    } 
} 
+0

しかし、クリックしたセルに依存してyourDataをどのように取得しますか? prepareForSeagueは前に呼び出されます - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPathしたがって、セルがclcikedされたので、関連データは後で私たちに渡されます:(! –

+0

別のsegues?:) – lnafziger

関連する問題