我终于找到了解决方案,它不是可行的解决方案,但使我免于对项目进行重大更改。我所做的是-
我使用 unwind segue 将值从子弹出容器传递回主控制器。为此我介绍了两种方法第一个是:容器视图控制器中的 prepareForSegue 方法-
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([[segue identifier] isEqualToString:@"CommentOptionToComments"])
{
APMCommentsViewController *objCommentController=(APMCommentsViewController *)segue.destinationViewController;
for(APMOption *obj in self.optionList)
{
if(obj.IsAnswer)
{
NSString *dataToPassBack=[NSString stringWithFormat:@"%d",obj.Number];
self.passBackToParent=dataToPassBack;
}
}
NSLog(@"Return to parent");
}
}
另一个是 ParentViewController 中的 unwindSegue 方法 -
-(IBAction)unwindToList:(UIStoryboardSegue *)segue
{
//get the value from the segue and use it as per your requirement
APMCommentsOptionViewController *source=[segue sourceViewController];
self.lblHiddenResponse.text=source.passBackToParent;
}
但不要忘记在 ParentViewController.h 文件中声明展开转场。
现在我所做的是将我的原型单元连接到情节提要中的 unwind segue,并为 unwindsegue 指定一个标识符名称(出现在 Utility Area 中)
但问题是在调用 didSelectRowAtIndexPath 之前调用了展开 segue,结果虽然弹出窗口能够自行关闭但无法将所需的值发送到 ParentViewController。
为此,我只是在方法 didSelectRowAtIndexPath 中再次调用了 prepareForSegue,语法如 -
[self performSegueWithIdentifier:@"CommentOptionToComments" sender:self];
正如我所说,这不是一个可行的解决方案,但这最终解决了我的问题,但如果我使用 UIPopOverController 会更简单。