在视图之间传输时,变量值未被更改

时间:2011-04-28 12:34:02

标签: ios uiviewcontroller

我有两个视图,对于每个视图我都关联了一个UIViewController类 在view1(名为 RechercherViewController )中,我有一个简单的UITextField,用户在其中输入内容,然后单击一个按钮,单击此按钮时,用户将被重定向到view2(名为 StationsSurLaCarteViewController )我必须在UILabel中向他展示他在上一个视图中输入的内容。我的计划工作得非常好,但是对于第一个essai,我的意思是第一个值没有变化,尽管用户返回并更改了它,他总是(在view2的标签中)找到他第一次输入的内容。 所有声明都是正确的,这是我在view1中按钮的IBAction中的代码: 的 RechercherViewController.m

-(IBAction)goToStationsSurLaCarteView   {

      TopStationAppDelegate *topStation=(TopStationAppDelegate *)[[UIApplication sharedApplication]delegate];
    topStation.data=[typeCarburantTextField text];

    stationsSurLaCarteViewController.modalTransitionStyle=UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:stationsSurLaCarteViewController animated:YES];


}

在第二个视图中,此代码位于viewDidLoad中: 的 StationsSurLaCarte.m:

- (void)viewDidLoad {

    TopStationAppDelegate *topStation=(TopStationAppDelegate *)[[UIApplication sharedApplication]delegate];
    [label setText:topStation.data];


    [super viewDidLoad];




}

我不知道,但我怀疑是否遗漏了一些必须释放的内容,以便让用户输入新值。

1 个答案:

答案 0 :(得分:1)

在goToStationsSurLaCarteView中,由于您不是每次都重新创建stationsSurLaCarteViewController(使用alloc + init),因此只会在第一次调用presentModalViewController时调用viewDidLoad。

一个简单的解决方法是在StationsSurLaCarte.m中移动标签设置代码为viewWillAppear:(或viewDidAppear:):

-(void)viewWillAppear:(BOOL)animated
{
    TopStationAppDelegate *topStation=(TopStationAppDelegate *)[[UIApplication sharedApplication]delegate];
    [label setText:topStation.data];
}