将数据传递给UINavigationController Partent

我有一个VC(root)调用模态Segue到UINavigatioController(设置)。 用户可以改变他们想要的东西。 如何让第一个VC(root)知道更改已完成。 UINav的委托是(根)VC。 任何从模态segue传回数据的想法? 干杯

使用AppDelegate作为子VC可以调用的中央通信中心,并将数据传递给。 请尝试以下方法:

首先在AppDelegate中设置一个共享委托类方法和一个将数据传递给子VC的方法,如下所示:

// In MyAppDelegate.h #import  #import  @interface MyAppDelegate : NSObject { // rootviewcontroller is the parent of your UINavigationController UIViewController *rootViewController; } + (MyAppDelegate *)sharedAppDelegate; -(void)passData:(NSString*)myString; 

所以..

 // In MyAppDelegate.m #import "MyAppDelegate.h" @implementation MyAppDelegate.m + (MyAppDelegate.m *)sharedAppDelegate { return (MyAppDelegate.m *) [UIApplication sharedApplication].delegate; } -(void)passData:(NSString*)myString{ // pass data to parent of UINavigationController [rootViewController hereIsSomeData:myString]; } 

然后从您的UINavigationController(VC.m)的.m文件中导入您的AppDelegate类并实例化一个共享委托,这将基本上让您“调用”AppDelegate并将其发送给它。

 // In VC.m #import "MyAppDelegate.h"; // ... NSString *myString = @"alskdjfalsdjfq324r"; [[MyAppDelegate sharedAppDelegate] passData:myString]; 

还有另一种方式。 您可以在父控制器中创建一个可变对象,例如NSMutableDictionary,并将其传递给子控制器。 对子控制器中的NSMutableDictionary所做的任何更改都会转移到原始父控制器,因为它们都是指向内存中同一对象的指针。 祝你好运!