2014-03-04 76 views
0

我有一个设置视图控制器,我有一个segue和那很好,用户已经进入设置VC并修改后设置如何将这些设置为主视图控制器。有没有可能的'其他方式'赛格?设置视图控制器到主视图控制器信息传输

+3

特别是对于这种情况下(设置),也许这将是更适当的持久化数据到'NSUserDefaults',而不是仅仅将它们传递控制器之间。 – Alladinian

回答

0

必须使用委托协议,这个答案是非常适合你的问题

delegate protocol

0

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

  1. 使用NSUserDefaults来保留已经选择的设置。 Class Reference
  2. 使用委托技术将结果传达给应用程序中的另一个对象。
  3. 使用通知将事件/更改传播到您应用中的一组对象。
  4. 如果这些变化过于复杂而无法保存到用户默认值,请使用您自己的模型来保持更改的持久性。
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); 
相关问题