1. ホーム
  2. ios

[解決済み] UITableViewのdidSelectRowAtIndexPathメソッドまたはprepareForSegueメソッドを使用する?

2023-01-25 23:55:19

質問

ストーリーボードを使用しており、UITableViewを持っています。 私は、私のテーブルから詳細VCにプッシュするセグエのセットアップを持っています。 しかし、私はこれを処理するためにどのメソッドを使用する必要がありますか? 私はいくつかのオブジェクトを詳細ビューに渡す必要があります。 しかし、私は didSelectRowAtIndex を使うか、それとも -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender ?

どのように解決するのですか?

もし prepareForSegue:sender: を使用する場合、後でテーブルビューの外のいくつかのコントロールからセグエをトリガーすることにした場合、変更することはあまりないでしょう。

prepareForSegue:sender: のメッセージは現在のビューコントローラに送信されるので、次のようなものを提案します。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Assume self.view is the table view
    NSIndexPath *path = [self.tableView indexPathForSelectedRow];
    DetailObject *detail = [self detailForIndexPath:path];
    [segue.destinationViewController setDetail:detail];
}

Swiftでは

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    let path = self.tableView.indexPathForSelectedRow()!
    segue.destinationViewController.detail = self.detailForIndexPath(path)
}