显示部分卷曲的视图控制器

时间:2013-02-12 13:34:03

标签: ios uiviewcontroller uistoryboardsegue

我有一个包含多个文本字段/文本视图的视图控制器,并希望允许用户使用他们在网络上找到的内容填充这些字段。为此,我有一个不同的Web视图以模态方式呈现。我的问题是我想使用部分页面卷曲来显示第一个视图控制器(带有任何填充的信息)。但是,您无法再次显示实时视图控制器,并且新实例不会预先填充已放置在文本字段中的任何信息。

好像我可以来回传递那些信息(从第一个实例到第二个视图控制器,然后将信息复制到第二个实例,然后在我解雇第二个实例时复制回来等)但是它似乎应该有更好的方法。

我也可以将网页视图控制器添加为子视图,但我想念部分卷曲的功能,我非常喜欢。

谢谢!

2 个答案:

答案 0 :(得分:1)

  

但是,您无法再次呈现实时取景控制器,并且   新实例不会预先填充任何信息   已放置在文本区域中。

您不需要每次都创建一个新的视图控制器。只需将该视图控制器对象存储为实例变量,并在用户完成之前不要释放它。

if (myViewController == nil) {
    myViewController = [UIViewController alloc] init];
}
[self presentViewController:myViewController animated:YES];    

答案 1 :(得分:0)

所以我把评论和发布的答案结合起来。

首先:我使用Web视图存储vc的实例,并将其视图添加到第一个视图控制器,然后隐藏视图:

self.webVC = [self.storyboard instantiateViewControllerWithIdentifier:@"webView"];
self.webVC.delegate = self;
self.webVC.view.frame = self.view.bounds;
[self.view addSubview:self.webVC.view];

[self.webVC.view didMoveToSuperview];
self.findPoemVC.view.hidden = YES;

然后我在UIView上使用了一个类别来展开和卷曲视图。我找到了代码here

要显示视图,我执行如下的CurlDown动画:

 self.findPoemVC.view.hidden = NO;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown
                       forView:self.webVC.view
                         cache:YES];

self.webVC.view.hidden = NO;
[UIView commitAnimations];

在webVC上,我实现了一个协议并在第一个视图控制器中实现了委托方法:

在webVC中:

@protocol PoemFinderDelegate <NSObject>
    -(void)shouldUncurl;
    -(void)doneWasPressed;
@end

委托是先前设置的(参见上文),并且委托方法的实现部分解除并且完全解除了webview在第一个视图控制器中的完成:

-(void)shouldUncurl{
    [self.webVC.view animationPartialCurlUp];
}
-(void)doneWasPressed{
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.50];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp
                           forView:self.webVC.view
                             cache:YES];

    self.webVC.view.hidden = YES;
    [UIView commitAnimations];
}