1

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

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

我也可以将 Web 视图控制器添加为子视图,但我错过了我非常喜欢的部分卷曲的功能。

谢谢!

4

2 回答 2

1

但是,您不能再次显示实时视图控制器,并且新实例不会预先填充文本字段中已放置的任何信息。

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

if (myViewController == nil) {
    myViewController = [UIViewController alloc] init];
}
[self presentViewController:myViewController animated:YES];    
于 2013-02-12T20:06:10.190 回答
0

因此,我将评论和发布的答案结合在一起。

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

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 上使用了一个类别来展开和卷曲视图。我在这里找到了代码:

为了显示视图,我执行了一个 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];
}
于 2013-03-22T16:15:35.497 回答