我正在开发一个应用程序,需要在视图控制器之间传递数据。我知道这是一个常见的问题,但我找不到我的问题的答案:我能够从第一个视图控制器(MasterViewController
在我的情况下)向第二个视图控制器(SettingsViewController
)传递数据,但不能反过来。我在SecondViewController.m文件中调用FirstViewController的方法,它可以记录数据。但是,当我退出SecondViewController时(使用[[self presentingViewController] dismissViewControllerAnimated:YES completion:nil];
),数据被重置。
我尝试了其他方法来传递数据,但没有成功。我正在使用这段代码来传递数据:
MasterViewController *vc = [[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil];
[vc setPorts:SelectedPorts];
我也尝试将
[vc setPorts:SelectedPorts];
替换为vc.selectedCellIndexes = SelectedPorts;
,但是出现了相同的问题。
setPorts
方法在FirstViewController.h
文件中声明,而SelectedPorts
是我在SecondViewController.m
中声明的变量(它不为nil,我已经检查过)。以下是
FirstViewController.m
中的setPorts:
:- (void) setPorts:(id)selectedPorts {
selectedCellIndexes = selectedPorts;
NSLog(@"selectedCellIndexes : %@", selectedCellIndexes);
}
这段代码记录了一个好的数值,但是当我在FirstViewController.m中的viewWillAppear
方法中记录它时,它会被重置为在SecondViewController.m中调用该方法之前的数值。
只是为了澄清,如果我不退出SecondViewController.m
,数据就不会被重置。
我已经阅读了您所有的评论,并且非常感谢您的帮助。为了方便起见,我使用了全局变量。
感谢您的帮助。