2017-01-06 10 views
0

UIScrollViewサブビューからView Controllerを表示しようとしています。 私はAppDelegate window.rootViewController presentViewControllerを使用しようとしました:しかし、それは私に "ビューは階層にありません!"エラー。 addSubviewの使用を避けたいのは、MVCが壊れてコントローラの機能が削除されていると思われるからです(ボタンが機能しなくなる)。 私は、presentViewControllerメソッドを使用すると、 "InititalScrollViewSubview"のvisible @interfaceがセレクター "presentViewController:animated:completion:" 。のUIViewController UIScrollViewのはpresentViewController方法なしでは、UIScrollViewサブビューからストーリーボードUIViewControllerを提示します。

私のコードのようなものです:。

-(void)setupTouchIDButtonTapped: (id)sender { 

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"newViewController" bundle:nil]; 
    NewViewController *myNewViewController = [storyboard instantiateViewControllerWithIdentifier:@"myNewVC"]; 

//私が試した最初のもの:

AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
[delegate.window.rootViewController presentViewController:NewViewController animated:YES completion:nil]; 
InitialScrollViewSubviewがあり

[self presentViewController:NewViewController animated:YES completion:nil]; 

} 

はそれが道ままに:

// 2番目のものは、私が試した

[self addSubview:NewViewController.view]; 

//第三の事を試してみました。理想的には、InitialScrollViewSubviewが別のUIViewControllerであるように私はすべてをリファクタリングしたいと思いますが、私は巨大な会社のために働き、アプリはあまりにも大きいです。 アドバイスをいただければ幸いです!

ありがとうございます!

答えて

0

ビューコントローラのビューをスクロールビュー内に '埋め込み'しようとすると、ビューコントローラは表示されません。インスタンス化し、そのビューをビュー階層に追加します。

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"newViewController" bundle:nil]; 
    NewViewController *myNewViewController = [storyboard instantiateViewControllerWithIdentifier:@"myNewVC"]; 

[scrollView addSubview:NewViewController.view]; 

ビューコントローラが正しいサイズになるように、またセットアップするビューまたはセットアップ自動レイアウトの制約のサイズ/フレームが必要になります。

+0

ありがとうございます! 私はそれを試してみました。[self addSubview:NewViewController.vew]; ビューが表示されますが、すべてのボタンが機能しなくなります。なぜなら、これはscrollViewビューのちょうど離れたところにあるので、「コントローラ」機能を失うからです。 –

+0

スクロールビューは、イベントを受信するために登録されたプライマリビューである可能性が高いので、viewcontroller.viewでuserInteractionenabledを有効にしてください。あなたはまた、ここでヒントを試すことができます:http://stackoverflow.com/questions/4629499/how-to-steal-touches-from-uiscrollview – Scriptable

+0

これはおそらく必要な解決策ですhttp://stackoverflow.com/questions/16649639/uibutton-does-not-work-when-it-in-uiscrollview – Scriptable

0

この

UIStoryboard *絵コンテ= [: "newViewController" バンドル@:UIStoryboard storyboardWithNameはnil]を試してみてください。

NewViewController *myNewViewController = [storyboard instantiateViewControllerWithIdentifier:@"myNewVC"]; 

AppDelegate *デリゲート=(AppDelegate *)[のUIApplication sharedApplication]デリゲート]。

UINavigationController * rootNvc = delegate.window.rootViewController;

[rootNvc pushViewController:NewViewController animated:YES];

関連する問題