3

iOSプログラミングを行ってからしばらく経ちましたので、簡単な質問をお許しください。私は検索しましたが、おそらく私はこれを考えすぎています。

動的プロトタイプ セルを、選択したセルの詳細を表示する詳細ビューに接続する ShowStreamDetails というセグエがあります。詳細開示ボタンがめんどくさいとは知らなかった。セルを選択すると、正しく機能し、オブジェクトが詳細ビューに渡されます。詳細開示インジケーターを押すと、詳細ビ​​ューに移動し、そのビューには、セルにリストされている実際のアイテムではなく、リストの最初のアイテムが表示されます。だから、ここに私が持っているものがあります。

-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:   
(NSIndexPath *)indexPath
{
  [self performSegueWithIdentifier:@"ShowStreamDetails" sender:[self.tableView cellForRowAtIndexPath:indexPath]];
}

そしてセグエの準備:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{
    if ([[segue identifier] isEqualToString:@"ShowStreamDetails"]) 
    {
        StreamsDetailViewController *detailViewController = [segue destinationViewController];

        detailViewController.streams = [self.dataController objectInListAtIndex:[self.tableView indexPathForSelectedRow].row];
    }
}

これを prepareForSegue: に追加して正しい情報を渡すにはどうすればよいですか?

4

3 に答える 3

1

私はちょうどこの問題に遭遇し、送信者パラメーターが詳細開示の UITableView セルであることを突き止めました。

だから、次のようなことをしてください:

UITableViewCell* cell = (UITableViewCell*)sender;
IndexPath* iPath = [self.tableView indexPathForCell: cell];
于 2013-04-02T08:15:33.670 に答える
1

@voidref は正しい考えを持っています。

問題は、ユーザーが詳細開示ボタンをタップしたときに、セルが選択されないことです。そのため、nil が返されます。これ-indexPathForSelectedRowは、配列インデックスのためにゼロとして扱われます。

代わりに、開示ボタンがセグエをトリガーしたセルのインデックス パスを検索する必要があります。したがって、コードの 2 番目のブロックは次のようになります。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{
    if ([[segue identifier] isEqualToString:@"ShowStreamDetails"]) 
    {
        StreamsDetailViewController *detailViewController = [segue destinationViewController];

        detailViewController.streams = [self.dataController objectInListAtIndex:[self.tableView indexPathForCell:sender].row];
    }
}

また、元の質問とは直接関係ありませんが、実装する必要はありません-tableView:accessoryButtonTappedForRowWithIndexPath:。代わりに、ストーリーボードでプロトタイプ セルのアクセサリ タイプを Detail Disclosure に設定し、プロトタイプ セルのアクセサリ ボタンからコントロール/2 本指/右ドラッグして詳細ビュー コントローラに移動し、結果のセグエに「ShowStreamDetails」という名前を付けます。

アクセサリ ボタンは間違いなく「送信者」ですが、senderパラメータはテーブル ビュー セルに自動的に設定されます。

于 2014-11-12T01:14:04.397 に答える