如何关闭容器视图
Posted
技术标签:
【中文标题】如何关闭容器视图【英文标题】:How to close a container view 【发布时间】:2014-11-10 06:27:14 【问题描述】:我正在使用 xcode 5 开发一个 ios 项目。我需要在弹出窗口中显示一个选项表,因此我使用了容器视图并通过 segue 将其称为弹出窗口。现在的问题是,只要我在其中选择一行,我就想关闭(而不仅仅是消失)容器视图。 请指导我如何实现它。在此先感谢。
【问题讨论】:
你能发布一些代码吗?要“关闭”容器视图,您不只是将其从超级视图中删除吗?喜欢[containerView removeFromSuperview]
@rfj001 希望我发布哪组代码?让我详细解释一下:[如果我错了请纠正我]我正在使用委托方法将值从容器视图获取到主视图。我调试并发现委托的实现在主视图即将结束时被调用,这给了我一种直觉,如果我能够结束容器视图,那么只需轻轻一按,它将在预期的时间被调用。而且我也可以关闭弹出窗口(这是我的要求之一。
我没有使用 xib 文件,所以如果你能告诉我在不使用 xib 或 nib 的情况下将容器视图添加到 superview 的语法是什么
【参考方案1】:
推荐使用弹出窗口而不是 UIAlertView。但是如果需要使用弹出视图,您可以简单地显示/隐藏容器视图控制器的视图!
【讨论】:
嗨@thatzprem 我不只是想隐藏或显示容器视图,我想结束它并将控件返回到超级视图。 容器视图不过是一个视图控制器。您如何以模态方式呈现它并关闭模型视图控制器。 能否请您详细说明,您是要我关闭容器视图 MainViewController *mainViewController=[[MainViewController alloc]init]; [self.navigationController presentModalViewController:mainViewController Animation:YES]; [selfdismissModalViewControllerAnimated:YES];【参考方案2】:我终于找到了解决方案,它不是可行的解决方案,但使我免于对项目进行重大更改。我所做的是-
我使用 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 会更简单。
【讨论】:
以上是关于如何关闭容器视图的主要内容,如果未能解决你的问题,请参考以下文章