我有一个包含多个文本字段/文本视图的视图控制器,并希望允许用户使用他们在网络上找到的内容填充这些字段。为此,我有一个不同的Web视图以模态方式呈现。我的问题是我想使用部分页面卷曲来显示第一个视图控制器(带有任何填充的信息)。但是,您无法再次显示实时视图控制器,并且新实例不会预先填充已放置在文本字段中的任何信息。
好像我可以来回传递那些信息(从第一个实例到第二个视图控制器,然后将信息复制到第二个实例,然后在我解雇第二个实例时复制回来等)但是它似乎应该有更好的方法。
我也可以将网页视图控制器添加为子视图,但我想念部分卷曲的功能,我非常喜欢。
谢谢!
答案 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];
}