1

Storyboard でセグエ (ShowADVDetail) を使用して、TableViewController セルから DetailViewContoller (UITableViewController) にデータを渡したいです。

解析された RSS フィードを含む NSMutableArray の「ストーリー」があります。

セルの「タイトル」値を渡す次の prepareForSegue を使用しています。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
        { 
            if ([segue.identifier isEqualToString:@"ShowADVDetail"]) {

                NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
                int storyIndex = [indexPath indexAtPosition: [indexPath length] - 1];
                NSString *theTitle = [[stories objectAtIndex: storyIndex] objectForKey: @"title"];
                [[segue destinationViewController] setDetailItem:theTitle];


            }
    }  

次の行で、特定のセルの「タイトル」値を渡すことができます。

NSString *theTitle = [[stories objectAtIndex: storyIndex] objectForKey: @"title"];

次のように「説明」値と「リンク」値にアクセスすることもできます。

NSString *theDescription = [[stories objectAtIndex: storyIndex] objectForKey: @"description"];
NSString *theLink = [[stories objectAtIndex: storyIndex] objectForKey: @"link"];

しかし、セグエで 3 つの値すべてを渡すにはどうすればよいですか?

これまでのところ、私の didSelectRowAtIndexPath は次のようになっています。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:NO]



        [self performSegueWithIdentifier:@"ShowADVDetail" sender:self];

}

これが理にかなっていることを願っています..

ありがとう

4

1 に答える 1

5

私はあなたの質問を正しく理解していると思います。これを実現するには、(detailviewcontroller の) ヘッダー ファイルに、渡されるプロパティのプロパティを作成します。

したがって、detailViewController ヘッダーは次のようになります。

@interface DetailListViewController : UIViewController
  @property (strong, nonatomic) NSString *storyName;
  @property (strong, nonatomic) NSString *storyDescription;
  ...
@end

次に、ストーリーボードで、セグエをテーブルビューからdetailViewControllerにコントロールドラッグできます。

tableviewcontroller で、detailViewController.h ファイルをインポートし、次のようなコードを追加します。

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
  NSIndexPath *indexPath = self.tableView.indexPathForSelectedRow;
  [segue.destinationViewController setStoryName:###however you get name###;
  [segue.destinationViewController setStoryDescription:###however you get desc###;
}

このコードでは、「If segue.identifier...」のチェックを追加できます。

于 2012-04-09T17:11:13.927 に答える