Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何将数据从表单SeetController传递到ViewController?_Ios_Objective C_Uiviewcontroller_Delegates_Objective C Blocks - Fatal编程技术网

Ios 如何将数据从表单SeetController传递到ViewController?

Ios 如何将数据从表单SeetController传递到ViewController?,ios,objective-c,uiviewcontroller,delegates,objective-c-blocks,Ios,Objective C,Uiviewcontroller,Delegates,Objective C Blocks,我正在尝试使用此软件包: 现在我的问题是,在关闭表单之后,我试图在FormSeetController和ViewController之间传递数据 以下是我迄今为止所做的尝试: 在创建表单的按钮的ViewController中: formSheet.didDismissCompletionHandler = ^(UIViewController *vc){ // maybe i can use UIViewController *vc as my SearchGardenView (form S

我正在尝试使用此软件包:

现在我的问题是,在关闭表单之后,我试图在FormSeetController和ViewController之间传递数据

以下是我迄今为止所做的尝试: 在创建表单的按钮的ViewController中:

formSheet.didDismissCompletionHandler = ^(UIViewController *vc){
// maybe i can use UIViewController *vc as my SearchGardenView (form Sheet), but how?

    [self formSheetDidDismissed]; // here i tryin to get the kidGardenID but its always nil;
};
这是来自FormSeetController的:

    AddKid *kid = [[AddKid alloc]init];
    NSArray *temp = [_responseDict valueForKey:@"ID"];
    kid.kidGardenID = [temp objectAtIndex:indexPath.row];

    [self mz_dismissFormSheetControllerAnimated:YES completionHandler:^(MZFormSheetController *formSheetController) {

      //this block dismiss the formSheet.
}];
我需要将“kidGardenID”传递给ViewController,但它总是为零,即使在我给它一个值之后,正如上面的代码所示。。 可能是因为ViewController已经加载,当我从fortSheet返回时,它不再加载了

我需要找到一种传递数据的方法, 你能帮我吗

编辑 我尝试使用委托但未成功,未调用该委托。 这是我的代表代码:

设置代理(ViewControllerB)

设置要从VC B传回VC A的参数:

    _kidGaedenID  = [temp objectAtIndex:indexPath.row];
    _kidGardenName = [temp1 objectAtIndex:indexPath.row];


    [self.delegate addItemViewController:self didFinishWithGardenID:_kidGaedenID gardenName:_kidGardenName andCityName:_kidCityName];
在VC A上实现协议方法:

- (void)addItemViewController:(SearchGardenTable *)controller didFinishWithGardenID:(NSString *)gardenID gardenName:(NSString*)gardenName andCityName:(NSString*)cityName
{
    _kidGardenID = gardenID;
    _gardenName.text = gardenName;
    _kidCity.text = cityName;

}

为了将详细信息传递回您的父视图控制器,您应该设置一个代理协议,该协议将完全允许您正在查找的内容

如果您以前没有创建过任何代理协议,那么一旦您阅读了本教程并多次使用它,您就会发现您经常使用它

关于这方面有很多很好的教程,尽管这里是一个很好的起点


希望这有帮助,你可以试试willDismissCompletionHandler。这是在MZFormSheetController.h文件中定义的。键入case参数presentedViewController到视图控制器(我假定为AddKid),您可以在此处访问AddKit类的属性

@property (nonatomic, copy) MZFormSheetCompletionHandler willDismissCompletionHandler;

formsheet.willDismissCompletionHandler = ^(UIViewController *presentedViewController){
((AddKid*)presentedViewController).kidGardenID // should be accessible now.

})

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[MZNavigationView KIDGAEDENDEID]:未识别的选择器已发送到实例0x10e1907f0'
- (void)addItemViewController:(SearchGardenTable *)controller didFinishWithGardenID:(NSString *)gardenID gardenName:(NSString*)gardenName andCityName:(NSString*)cityName
{
    _kidGardenID = gardenID;
    _gardenName.text = gardenName;
    _kidCity.text = cityName;

}
@property (nonatomic, copy) MZFormSheetCompletionHandler willDismissCompletionHandler;

formsheet.willDismissCompletionHandler = ^(UIViewController *presentedViewController){
((AddKid*)presentedViewController).kidGardenID // should be accessible now.