1

これは典型的な質問であり、重複している可能性がありますが..

と を備えたiPadアプリがUINavigationBarありUITabBarます。appinfoViewControllerを表示する必要がある navigationBar にボタンを作成しました。

提示すると、navigationBar と tabTab は引き続きタップできます。しかし、 appinfoViewControllerをアプリのメイン画面サイズ全体 (モーダルなど)に表示したいと思い ます。

これは私のコードです:

- (void)showInfo
{
AboutViewController *about = [[AboutViewController alloc] init];
[about.view setFrame: self.view.frame];
[about.view setAlpha:0.0];

[UIView animateWithDuration:0.5
                      delay:0.0
                    options: UIViewAnimationOptionCurveLinear
                 animations:^{
                     [about.view setAlpha:1.0];

                     [self.view addSubview:about.view];
                     [self addChildViewController:about];
                     [about didMoveToParentViewController:self];
                 }
                 completion:^(BOOL finished){

                 }];
}

appinfoViewControllerを全画面表示するにはどうすればよいですか?

モーダルに提示することは可能かもしれませんが、黒の背景はありませんか?

4

3 に答える 3

1

コメントで示唆されているように、

[self presentViewController:about animated:YES completion:nil]

ナビゲーション バーとタブ バーを削除します。それらを保持する必要がある場合は、使用する必要があります

[self.navigationController pushViewController:about animated:YES];

編集:

about ビュー以外のすべての場所でユーザー インタラクションを無効にするには、少し手間がかかります。まず、表示するビュー コントローラーのメイン ビューではないビューにすべての UI 要素を埋め込む必要があります。

ボタン (「ショーについて」ボタン) しかない場合、それをメイン ビューに配置するだけでなく、ビュー コントローラーのビューとボタンを配置する場所 (その他の UI 要素と共に)。この外側のビューへの出口も必要です。次に、次のようなメソッドを記述します。

-(void)userInteractionEnabled:(BOOL)enabled
{   
    self.navigationController.navigationBar.userInteractionEnabled = enabled;
    self.tabBarController.tabBar.userInteractionEnabled = enabled;
    self.outerView.userInteractionEnabled = enabled;
}

別の方法として、outerView の代わりにすべての「インタラクティブ」アウトレットを無効にすることもできます。たとえば、2 つのテキストビュー、3 つのボタン、1 つの UIPickerView がある場合、userInteractionEnabled = enabled(親ビューに対してのみ行うのではなく) 各アウトレットに対して設定します。

これで、showInfo メソッドに次のものを含めることができます。

 CGRect frame = CGRectMake(50, 50, 200, 200); //Use whatever origin and size you need
 about.view.frame = frame;
 [self.view addSubview:about.view];
 [self userInteractionEnabled:NO]

そして、あなたの btnClose メソッドでは、次のように書くことができます:

[about.view removeFromSuperview];
[self userInteractionEnabled:YES];

これがお役に立てば幸いです。これが必要な場合はお知らせください。

PS たぶん、あなたはすでにこれを認識しているかもしれませんが、UIPopoverControlleriPad のアプリでのみ利用できる class があり、これらすべてをほぼすべて行うことができます。使い方のチュートリアルはこちらでご覧いただけます。

于 2013-06-14T09:17:46.617 に答える