0

my.h ファイルで宣言しました my.mi に@property (nonatomic, copy) NSDictionary *newsArticle; は次のメソッドがあります。

- (IBAction)synopsis:(id)sender {
    NSString *urlString = [NSString stringWithFormat:@"http://api.themoviedb.org/3/movie/%@?api_key=34eb86f3b94de2676e8d3007b5ce1993",movieid];
    dispatch_async(kBgQueue, ^{
        NSURL *url = [NSURL URLWithString:urlString];
        NSData* data = [NSData dataWithContentsOfURL:url];
        [self performSelectorOnMainThread:@selector(fetcheMovie:)withObject:data waitUntilDone:NO];
    });
}

- (void)fetcheMovie:(NSData *)responseData {
    NSError* error;

    NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData  options:kNilOptions error:&error];
    newsArticle= [NSJSONSerialization JSONObjectWithData:responseData  options:kNilOptions error:&error];
    NSLog(@"data1 = %@",newsArticle);
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    NSLog(@"data2 = %@",newsArticle);
    if ([[segue identifier] isEqualToString:@"web"]){
        WebViewController *vc = [segue destinationViewController];
        vc.imdbnumber=@"tt0105236rodrigo";
    }
}

fetcheMovie メソッドでは newsArticle の値を取得できますが、prepareForSegue メソッドでは同じことができません。

これらの値にアクセスするにはどうすればよいですか? 次のビューに渡すために値にアクセスする必要があります ありがとうロドリゴ

4

1 に答える 1

0

- (void)fetcheMovie:(NSData *)responseData次のビュー コントローラをプッシュするメソッド内またはメソッド内で、次のように呼び出す必要があります。

[self performSegueWithIdentifier:@"SegueIdentifier" sender:newsArticle];

そしてあなた- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)senderの送信者はパラメータとしてニュース記事センデットになりますperformSegue

編集

- (void)fetcheMovie:(NSData *)responseData {
    NSError* error;
    NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData  options:kNilOptions error:&error];
    [self performSegueWithIdentifier:@"SegueIdentifier" sender:json];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
      NSDictionary *jsonSendetAsParamInPerformSegue = (NSDictionary*)sender;

      newsArticle= [NSJSONSerialization JSONObjectWithData:jsonSendetAsParamInPerformSegue  options:kNilOptions error:&error];
      WebViewController *vc = [segue destinationViewController];
      vc.viewControllerProperty = newsArticle;
}

それに応じて、宛先View Controllerからプロパティを変更する必要があります。また、変数名は好きなように変更できます。

于 2013-05-07T15:59:57.477 に答える