设置查看控制器到主视图控制器信息传输

时间:2014-03-04 13:50:12

标签: ios objective-c

我有一个设置视图控制器,我有一个segue for,很好,在用户进入VC设置并修改设置后如何将这些设置输出到主视图控制器。是否存在可能的“其他方式”?

4 个答案:

答案 0 :(得分:0)

您必须使用委托协议,此答案非常适合您的问题

delegate protocol

答案 1 :(得分:0)

您可以使用Unwind segue。请查看以下教程以了解unwind segue。

http://chrisrisner.com/Unwinding-with-iOS-and-Storyboards

What are Unwind segues for and how do you use them?

您还可以使用NSNotificationcenter将数据从视图控制器传输到另一个控制器。

如果设置,NSUserdefaults是首选方法。

答案 2 :(得分:0)

这里有几个选项,基本上你需要一个策略来将数据从设置视图控制器传递到主视图控制器。我更喜欢独立于执行的segue。 你可以:

  1. 使用NSUserDefaults保留您已选择的设置。 Class Reference
  2. 使用委派技术将结果传达给应用中的其他对象。
  3. 使用通知将事件/更改传播到您应用中的一组对象。
  4. 使用您自己的模型来保持更改的持久性,如果这些更改太复杂而无法保存到用户默认值。

答案 3 :(得分:0)

您也可以尝试使用块。像这样在settingsViewController上放置一个属性:

@property (nonatomic, strong) void(^completionBlock)(NSDictionary *dataYouWantPassedBack);

然后在您的MainViewController中,在-prepareForSegue中设置当你关闭settingsViewController时你想要对数据发生什么

-(void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"mySegueName"])
    {
        SettingsViewController *dest = [segue destinationViewController];
        dest.completionBlock = ^(NSDictionary *dataYouWantPassedBack){

            //do anything you want with the data in the dictionary here
        };
    }
 }

在设置视图控制器中,您可以将数据放入要传回的字典中,然后在关闭视图控制器之前调用完成块并传递字典。

NSDictionary *example = [NSDictionary dictionaryWithObjectsAndKeys: obj, key, nil];

if (self.completionBlock)
    self.completionBlock(example);