1

我正在尝试使用导航控制器在两个 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];
    }
}

执行了segue,但视图不反映当前信息,因为是不同的对象。

任何帮助将不胜感激 :)

4

1 回答 1

1

updateDetail方法有什么作用?如果它试图更新目标控制器中的控件,那么这样做还为时过早,因为尚未创建控件。您只想NSString在目标控制器中设置属性(例如 a 或其他)。然后目标控制器应该获取该属性并更新其在viewDidLoad该目标控制器中的控件。

简而言之,目标控制器的地址将与视图控制器本身的地址相同。你没有向我们展示你NSLog报告的那两个地址的陈述,所以我们不可能说出那里发生了什么。

于 2013-01-21T20:58:05.437 回答