如何关闭容器视图

时间:2014-11-10 06:27:15

标签: ios xcode xcode5 uicontainerview

我正在使用xcode 5处理iOS项目。我需要在弹出窗口中显示一个选项表,因此我使用了一个容器视图,并通过segue将其称为弹出窗口。现在问题是我想在其中选择一行时关闭(不仅仅是消失)容器视图。 请指导我如何实现它。谢谢。

2 个答案:

答案 0 :(得分:0)

建议使用弹出窗口而不是UIAlertView。但是如果要求使用弹出视图,您可以简单地显示/隐藏容器视图控制器的视图!

答案 1 :(得分:0)

我终于找到了解决方案,这不是可行的解决方案,但是让我免于对项目进行重大更改。我做的是 -

我使用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。

现在我所做的是将我的原型单元连接到故事板中的展开segue并给unwindsegue一个标识符名称(存在于Utility区域中)

但问题是在调用didSelectRowAtIndexPath之前调用了展开segue,尽管弹出窗口能够自行关闭但无法将所需的值发送到ParentViewController。 为此,我在方法didSelectRowAtIndexPath中再次调用prepareForSegue,语法如 -

[self performSegueWithIdentifier:@"CommentOptionToComments" sender:self];

正如我所说它不是一个可行的解决方案,但这最终解决了我的问题,但如果我使用UIPopOverController会更简单。