iphone – 在视图控制器ios 7之间传递数据

我正在开发一个应用程序,我需要在视图控制器之间传递数据.我知道这是一个常见的问题,但我找不到我的问题的答案:我能够将数据从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中包含的端口列表也不会移动.

点赞