1

風景専用アプリ。私のメイン ウィンドウ xib には、UIView があります。私はプログラムで UIScrollview をその UIView にロードしていますが、これはうまく動作します。そのスクロールビューには、presentModalViewController 呼び出しを介して「詳細」画面 (別のビュー コントローラー) を表示するボタンがあります。

    LearnITViewController *learnit = [[LearnITViewController alloc] initWithNibName:@"LearnITViewController" bundle:nil];
self.learnitView = learnit;
[self presentModalViewController:learnit animated:YES];    
[learnit release];

アクションが呼び出されていますが、スクロールビューがサブビューの場合、モーダル ビューは画面全体を占有しません。代わりに、親スクロールビューに飛び込んで向きを反転させるなどです。望ましい動作ではありません。

メインxibのコンテナUIViewのサブビューであるスクロールビューからの呼び出し時に、モーダルビューを全画面表示にする方法に関するガイダンスはありますか?

4

4 に答える 4

1

すべてのコメントをありがとう。presentModalViewController をオーバーライドし、メイン コントローラー (私の場合は HomeViewController) に到達するまでループでバブリングすることに関するヒントをどこかに見つけました。チャンピオンのように働きました。

- (void) presentModalViewController:(UIViewController *)screen animated:(BOOL)animated {
    UIResponder *responder = self;
    while (responder && ![responder isKindOfClass:[HomeViewController class]]) {
        responder = [responder nextResponder];
    }
    [(UIViewController *)responder presentModalViewController:screen animated:YES];
}

呼び出しを行うボタンを含む UIScrollview の .m ファイルでオーバーライドしています。

于 2011-06-01T14:54:01.190 に答える
0

subview次のようではなく、を追加してみてくださいpresentModelViewController

LearnITViewController *tempView = [[LearnITViewController alloc] initWithNibName:@"LearnITViewController" bundle:[NSBundle mainBundle]];
self.learnITViewController = tempView;
[tempView release];
[self.view addSubview:mainMenuView.view]; 

そしてこれも追加

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{
// Return YES for supported orientations.
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);//or left
}
于 2011-06-01T04:42:46.767 に答える
0
LearnITViewController *learnit = [[LearnITViewController alloc] initWithNibName:@"LearnITViewController" bundle:nil];
self.learnitView = learnit;
[self.learnitView setsetWantsFullScreenLayout:YES];

また

self.learnitView.wantsFullScreenLayout = YES;
[self presentModalViewController:learnit animated:YES];    
[learnit release];
于 2011-06-11T12:13:06.960 に答える
-2

selfを追加する代わりUIViewControllersuperview

LearnITViewController *learnit = [[LearnITViewController alloc] initWithNibName:@"LearnITViewController" bundle:nil];
self.learnitView = learnit;
[self.view.superview presentModalViewController:learnit animated:YES];    
[learnit release];
于 2011-06-01T04:52:03.033 に答える