我正在开发一个应用程序,我需要在视图控制器之间传递数据.我知道这是一个常见的问题,但我找不到我的问题的答案:我能够将数据从FirstViewController(在我的情况下是MasterViewController)传递给SecondViewController(SettingsViewController),但不能反过来.会发生什么是我从SecondViewController.m文件中的FirstViewController调用一个方法.这可以工作并记录数据.但是当我退出SecondViewController时(使用[[self presentsViewController] dismissViewControllerAnimated:YES completion:nil];)数据被重置.
我尝试使用其他方法传递数据,但它不起作用.我正在使用此代码传递数据:
MasterViewController *vc = [[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil];
[vc setPorts:SelectedPorts];
我也试过替换[vc setPorts:SelectedPorts]; with vc.selectedCellIndexes = SelectedPorts;但同样的问题发生了.
setPorts方法在FirstViewController.h文件中声明,SelectedPorts是我在SecondViewController.m中声明的变量(它不是我检查的nil).
这是setPorts:在FirstViewController.m中:
- (void) setPorts:(id)selectedPorts {
selectedCellIndexes = selectedPorts;
NSLog(@"selectedCellIndexes : %@", selectedCellIndexes);
}
这会记录好的值,但是当我在FirstViewController.m中的viewWillAppear中记录它时,它会重置为我从SecondViewController.m调用该方法之前的值.
只是为了澄清,如果我不退出SecondViewController.m,数据不会重置.
我确实阅读了你的所有评论,我非常感谢你的帮助.为方便起见,我使用了一个全局变量.
谢谢你的帮助.
最佳答案 >您在MasterViewController中有一个端口列表,您希望在SettingsViewController中使用它.
> MasterViewController可以保存此列表,SettingsViewController应该可以访问它.
在SettingsViewController中,有一个setSelectedPort方法:
@property (nonatomic, retain) id selectedPorts
- (void) setPorts:(id)selectedPorts;
该方法将选定的端口列表保存到属性中.
在MasterViewController中,调用SettingsViewController并为其提供列表.
SettingsViewController *vc = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];
[vc setSelectedPorts:yourValue];
当在SettingsViewController中修改列表时,即使您离开SettingsViewController,MasterViewController中包含的端口列表也不会移动.