2013-02-12 51 views
1

我有一個視圖控制器與幾個文本框/文本視圖,並希望允許用戶填充這些領域與他們在網上找到的東西。爲了讓這個我有一個不同的網頁視圖模式。我的問題是,我想使用部分頁面捲曲來顯示第一個視圖控制器(與任何填充信息)。但是,您無法再次呈現實時視圖控制器,並且新實例未預先填充任何已放置在文本字段中的信息。顯示呈現視圖控制器部分捲曲

似乎我可以只是來回傳遞信息(從第一個實例到第二個視圖控制器,然後將信息複製到第二個實例中,然後在我解散第二個實例時複製回來,等等),但似乎應該有更好的方法。

我也可以將網絡視圖控制器作爲子視圖添加,但我錯過了我非常喜歡的部分捲曲的功能。

謝謝!

+0

看到http://stackoverflow.com/questions/1681315/partial-page-curl-animation – 2013-02-12 14:28:55

回答

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一個類別以舒展和捲曲風景。我發現代碼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 

委託先前設置(見上文)和委託方法的實施,部分地uncur升,完全舒展的網頁流量做了這樣的第一個視圖控制器內:

-(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]; 
} 
1

However, you can't present a live view controller a second time, and the new instance is not pre populated with whatever information was already placed in the textfields.

您不需要每次都創建一個新的視圖控制器。只需將該視圖控制器對象作爲實例變量存儲,並在用戶完成之前不要釋放它。

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

我已經試過了,但你得到這個錯誤:應用程序嘗試以模態方式呈現活動控制器,因爲控制器在當前控制器下仍處於活動狀態。 – Jbryson 2013-02-12 21:28:21

+0

您仍需要在第二個視圖控制器上調用dismissViewController。如果你使用ARC,你的第一個viewcontroller仍然會有第二個viewcontroller的引用,所以它不會釋放它。如果你沒有使用ARC,那麼只要確保你沒有釋放第二個視圖控制器,即使它被解散了。 – 2013-02-13 20:02:17

+0

但是,當你關閉呈現視圖控制器時,因爲第二個控制器是以模態方式呈現的,所以第二個控制器被取消。 EG:controller_1 = modal segue => controller_2(通過調用[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];這會導致只顯示controller1,同時我們也會得到非平衡調用來開始/結束外觀轉換。在調試區域。 – Jbryson 2013-02-13 20:13:49

相關問題