Container View Controllerの例[終了]


94

カスタムビューコントローラーをコンテナービューコントローラーとして作成する良い例を誰かに教えてもらえますか?私が見つけることができる唯一のドキュメントは、UIViewController Class Referenceのいくつかの段落です。それよりも少し多くの情報が必要だと思います。実装例はいいでしょう。グーグルはまったく何も上げていません。

私は特に方法に興味があります:

transitionFromViewController:toViewController:duration:options:animations:completion:

言及されているハイパークリプト以外のソースが見つかりましたか?
John Estropia、2011年

1
未だに。時間があれば、今日はまた掘るつもりです。それがどれほど重要で有用であるかを考えると、それに関する情報がほとんどないのは奇妙に思えます。それはバグがあるのか​​、それが改善されたら文書化されるでしょうか?
2011年

3
これは私にとって非常に混乱しています。たとえば、ビューには埋め込みコントローラーを1つだけ含めることができます。そのコンテナービューでコントローラーを切り替える場合はどうでしょうか?
user4951

@JanakNirmal多くの義務があります。
2013年

コンテナビューを非表示にできます
Maulik shah、2015

回答:


51

これまでに見つけた最高のものは、WWDC 2011セッションビデオセッション102-UIViewController Containmentの実装です


1
同上。これは私のお気に入りのデモコードの例ではありませんが、VCコンテナーとメモリ管理を適切に実装しています。子のビューコントローラーが表示されなくなったときに解放されることが非常に重要です。
メモン

1
残念ながら、ContainerViewControllerを使用する方法のデモは、iPadにメールを設定していないため機能しませんでした:-(
Ken M. Haggerty

そのセッションにはコードサンプルがありますか?
user4951 2012年

あなたは今サンプルコードを持っていますか、私はたくさん試しましたがまだ溶質ではないのでそれが必要です。
iPhoneプログラムで

37

WWDCセッションビデオセッション102-ハイパークリプトがすでに言及されているUIViewController Containmentの実装に加えて、「iOSでのビューコントローラーの進化」に関するApple WWDC 2012セッションもこのトピックをカバーしており、サンプルコードはサンプルコードパッケージの一部です。

https://developer.apple.com/devcenter/download.action?path=/wwdc_2012/wwdc_2012_sample_code/wwdc_2012_session_code.dmg

ここにも例があります:https : //github.com/toolmanGitHub/stackedViewControllers


2
+1そのくそったコードパッケージの入手先について言及。私はそれをずっと見てきました。
user4951 2012年

6
もう一度+1、なぜAppleはメンバーページにWWDCセッションコードを配置できないのですか?
axello 2013年

+1、このソースコードパスを取得する方法を教えてください。
Janak Nirmal 2013年

1
@JanakNirmalどのソースコードで問題が発生していますか?WWDCコードを取得するには、dmgリンクをたどって、Apple開発者IDでログインします。
JosephH 2013年

17
- (void)viewDidLoad{
    [super viewDidLoad];

    // I put self in a Navigation VC so we can use its right navigationbar 
    // item for triggering the transition
    self.navigationItem.rightBarButtonItem = 
     [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit 
                                                    target:self 
                                                    action:@selector(button:)] 
                                                                  autorelease];

    // create test1 and test2 instance (subclass UIViewController and 
    // also need to define their own nibs)
    vc1 = [[test1 alloc]initWithNibName:@"test1" bundle:nil];
    vc2 = [[test2 alloc]initWithNibName:@"test2" bundle:nil];

    //add to the container vc which is self    
    [self addChildViewController:vc1];
    [self addChildViewController:vc2];

    //the entry view (will be removed from it superview later by the api)
    [self.view addSubview:vc1.view];
}

このIBActionは、2つのVC間の移行をトリガーします。

-(IBAction)button:(id)sender {
    [self transitionFromViewController:vc1 
                      toViewController:vc2 
                              duration:0.5    
                               options:UIViewAnimationOptionTransitionCurlDown 
                            animations:nil 
                            completion:nil];
}

1
これは良い例です。ただし、この場合のメモリ管理は改善できます:より適切なソリューションの場合は、stackoverflow.com / a / 8453677/849616
Vive

1
あなたが間違っているというわけではありません。しかし、[self addChildViewController:vc1]; 意味がありません。コンテナVCには、いくつかのコンテナビューコントローラがある場合があります。
user4951 2012年

@Vive自分のプロジェクトでメモリ管理について懸念するポイントに達しました。あなたが投稿したリンクがメモリ管理の面で特に優れている点を教えてください。私は非常に新しく、差異を確認するのに苦労しています
jacobronniegeorge 2013年


10

これはできますか:

http://subjective-objective-c.blogspot.com/2011/08/writing-high-quality-view-controller.html

あなたのニーズに十分ですか?


4
実際、私はすでにそれを見つけていましたが、残念ながらそれはIos4について書かれていますが、5は重要な変更を加えました。Appleは、カスタムView Controllerコンテナーの作成を明示的にサポートするようになりました。ありがとう。
2011年

彼らが言うところを見せてくれませんか。私もそれと格闘しているので、あなたを疑わないでください。
Rui Peres、2011年

4
心配ない。私は彼のコンテナークラスのコードを調べましたが、次のメソッドはどれも使用していません:addChildViewController:、removeFromParentViewController、transitionFromViewController:toViewController:duration:options:animations:completion:、willMoveToParentViewController:およびdidMoveToParentViewController: UIViewControllerのios5ドキュメント。
11

8

これが「良い」例かどうかはわかりませんが、https: //bitbucket.org/javieralonso/jaacordeonviewcontroller/overviewから無料のContainer ViewControllerを入手できます。

完全なアコーディオンメタファーコンテナービューコントローラーです。


いい発見。それは便利に見えます。
Undistraction

3

これらは私のお気に入りの(iOS7対応)チュートリアル/テーマの例です(3つすべてにgithubでソースコードが利用可能です):

View Controller Containment

カスタムContainer View Controllerの遷移

インタラクティブなカスタムContainer View Controllerの遷移

そしてもちろん、Appleは私がかけがえのないものだと思う主題についての完全な記事を提供します:

カスタムContainer View Controllerの作成

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.