1

ナビゲーションコントローラーを使用して2つのViewController間で遷移しようとしていますが、segue.destinationViewControllerによって参照されるオブジェクトは0x1cd93590(次のビュー)ですが、新しいビューに変更が加えられると、オブジェクトの数が異なります。 0x1cd4556d0。私のコードは次のとおりです。

- (void)updateCodeProduct:(NSString *)code {
    [session stopRunning];

    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
    AudioServicesPlaySystemSound(1111);

    // db acces.
    NSString *cadena = @"http://172.20.10.2/consultaProd.php?codigo=";
    cadena = [cadena stringByAppendingString:codigo];
    NSURL *url = [NSURL URLWithString:cadena];
    NSError *error = nil;

    NSString *retorno = [[NSString alloc] initWithContentsOfURL:url encoding:NSASCIIStringEncoding error:&error];
    if (retorno == nil) {
        NSLog(@"Error %@\n%@", url, [error localizedFailureReason]);
        return;
    }

    self.detailProd = nil;
    self.detailProd = [retorno componentsSeparatedByString:@"\n"];

    [self performSegueWithIdentifier:@"DetailSegue" sender:self];    
}

prepareForSegueメソッドは次のとおりです。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSLog(@"%@", [segue destinationViewController]);

    if ([segue.identifier isEqualToString:@"DetailSegue"]) {
        [segue.destinationViewController updateDetail:detailProd];
    }
}

セグエは実行されますが、オブジェクトが異なるため、ビューには現在の情報が反映されません。

どんな助けでもありがたいです:)

4

1 に答える 1

1

メソッドは何をしupdateDetailますか?宛先コントローラーのコントロールを更新しようとしている場合、コントロールはまだ作成されていないため、更新するには時期尚早です。NSString宛先コントローラでプロパティ(たとえば、など)を設定するだけです。次に、宛先コントローラーはそのプロパティを取得しviewDidLoad、その宛先コントローラーのコントロールを更新する必要があります。

つまり、宛先コントローラーのアドレスは、ビューコントローラー自体のアドレスと同じになります。あなたが報告しているこれらの2つのアドレスについてのあなたの声明を私たちに示さないNSLogので、そこで何が起こっているのかを私たちが言うことは不可能です。

于 2013-01-21T20:58:05.437 に答える