2013-08-04 6 views
9

私はこの質問を数回は知っていますが、私は非常に経験が不十分で、正しい答えがまだ与えられていないと思います。2つのUIViewControllerのビューをスワイプ

私は現在、.hファイル、.mファイル、および.xibファイルを持つ2つのView Controllerを持っています。どちらの.xibファイルでも、私はUIViewを持っています。この2つのビューの間でスワイプできるようにするにはどうすればよいですか?たとえば、最初のビューでアプリが開き、右から左にスワイプすると次のビューが表示されます。写真をスワイプするときに、スワイプのアニメーションを写真アプリのアニメーションにしたい。

答えて

17

あなたは(UIPanGestureRecognizerまたはUIScrollViewと一緒にcustom container view controllerで)これを自分で実装することができますが、後でのiOS 6を使用している場合、最も簡単な方法は、「スクロール」トランジションスタイルでPage View Controllerを使用することであろう。

は、このストーリーボードを考えてみましょう:

pageviewcontroller storyboard

これは、ページビューコントローラで構成され、2ページの2つのシーン。ページ1は、ストーリーボード識別子がoneで、基底クラスがPageOneViewControllerです。ページ2は、ストーリーボード識別子がtwoで、基底クラスがPageTwoViewControllerです。

私は、次のコードを持っている、UIPageViewControllerサブクラス書いた(と、おそらく明らかに、これは私が上記のストーリーボードの最初のシーンのために、指定されたクラスである):

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.dataSource = self; 

    [self setViewControllers:@[[self.storyboard instantiateViewControllerWithIdentifier:@"one"]] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil]; 
} 

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController 
{ 
    if ([viewController isKindOfClass:[PageOneViewController class]]) 
     return nil; 

    return [self.storyboard instantiateViewControllerWithIdentifier:@"one"]; 
} 

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 
{ 
    if ([viewController isKindOfClass:[PageTwoViewController class]]) 
     return nil; 

    return [self.storyboard instantiateViewControllerWithIdentifier:@"two"]; 
} 

あなたがしてこれを行うことができますNIBもありますが、より多くのコードを書く必要があります。 UIPageViewController XIBを検索した場合、おそらくヒットします。

6.0より前のiOSバージョンをサポートする必要がある場合は、パンジェスチャーまたはスクロールビューでカスタムコンテナのアプローチを実行する必要があります。

4

あなたの目標を充実させるために、さまざまな正しい方法があります。例えば

1)のiOS 6から、あなたはあなたが財産pagingEnable = YES;UIScrollViewを使用し、その中にあなたの意見を追加することができます)transitionStyleプロパティUIPageViewControllerTransitionStyleScroll

2でUIPageViewControllerを使用することができます。

  • TTScrollSlidingPagesController
  • :また、あなたはあなたのようなサードパーティのソリューションを見つけることができます)お使いのコントローラ

    3のmathodsを消える/表示されて対処するために、すべてのコンテナのメソッドaddChildViewController:removeFromParentViewControllerwillMoveToParentViewController:didMoveToParentViewController:を実装する必要がありますここで

  • PagerViewController
+0

あなたはおそらく、スクロールビューのオプションで私を助けることができます。私が言ったように、私はObjective-Cをあまりよくしていないので、自分が何をしているのか分かりません。 UIScrollViewの実装方法のサンプルコードを書くことができますか?私が前に言ったように、私は2つのView Controllerを持っています(私はそれが正しいかどうかわかりません)。ありがとうございました!必要な場合はさらに詳しい情報をお尋ねください! – user2397282

+1

多くのチュートリアルやサンプルがインターネットにあります:http://www.raywenderlich.com/10518/how-to-use-uiscrollview-to-scroll-and-zoom-content http://eureka.ykyuen.info/2010/05/22/iphone-uiscrollview-with-paging-example/http://gabriel-tips.blogspot.com/2012/02/page-control-display-view-controllers.html http:// www。 iosdevnotes.com/2011/03/uiscrollview-paging/ – Flop

+0

@ user2397282フロップはあなたに素晴らしいリンクをたくさん与えてくれました。あなたはそれらのうちのいくつか(すべてではないにしても)を通過し、彼らがどのように動作するかを本当に理解する必要があります。あなたがこれらのリンクのいくつかを通ってあなたの質問を研究する時間を取れば、あなたはあなたの質問を解決するにはいくつかの素晴らしいアプローチを発見します。 – Rob

-1

このレポを使用することができます。これはRnDのほうがはるかに簡単でわかりやすいものです。 (スウィフト3コード)

https://github.com/lakshikabhardwaj/LBViewControllerCollection

 let mainViewController = CPPageMenuVC(nibName: "CPPageMenuVC", bundle: nil) 
     let pageMenuarray :[PageModal] = [PageModal(pageTitle: "Cat", pageVC: cpCatVC),PageModal(pageTitle: "Cow", pageVC: cowCX),PageModal(pageTitle: "Chat", pageVC: cpCatVC),PageModal(pageTitle: "ElephantElephant", pageVC: elephantVC)] 

     pageMenuVC.pageArray = pageMenuarray 
     pageMenuVC.tabHeight = 0 // WITHOUT TOPICS 
関連する問題