我有两个视图,对于每个视图我都关联了一个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];
}
我不知道,但我怀疑是否遗漏了一些必须释放的内容,以便让用户输入新值。
答案 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];
}