web-dev-qa-db-ja.com

UIWindowにビューを追加する方法は?

次のコードを使用してUIWindowにビューを追加したいと思いました。

 AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
 UIWindow *window = delegate.window;
 UIView *aView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
 aView.backgroundColor = [UIColor blackColor];
 [window addSubview:aView];

このコードは機能しませんでした。 UIAlertViewのプロパティを複製したいと思いました。 [alertViewInstance show];メソッドを呼び出すと、すべての上にポップオーバーします。

これも試しました:

   UIView *aView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
    UIWindow* window = [UIApplication sharedApplication].keyWindow;

    if (!window) {
        window = [[UIApplication sharedApplication].windows objectAtIndex:0];
    }

    [window addSubview:aView];
    [window bringSubviewToFront:aView];
9

UINavigationControllerを使用している場合:

[self.navigationController.view.window addSubview:aView];

UITabBarControllerを使用している場合:

[self.tabBarController.view.window addSubview:aView];

AppDelegateでは、ウィンドウに直接ビューを割り当てることができます。 appDelegatedidFinishLaunchingWithOptionsメソッドで:

[self.window addSubview:aView];

それが役に立てば幸い...

10
Vishal16

このコードを試してください:

window = [[UIApplication sharedApplication].windows lastObject];

次のコードを置き換えます。

window = [[UIApplication sharedApplication].windows objectAtIndex:0];
6
Steven Gardner

このコードで試してください:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    UIWindow* window = [UIApplication sharedApplication].keyWindow;
    if (!window) {
        window = [[UIApplication sharedApplication].windows objectAtIndex:0];
    }

    UIView *aView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    aView.backgroundColor = [UIColor redColor];
    aView.center = window.center;
    [window insertSubview:aView aboveSubview:self.view];
    [window bringSubviewToFront:aView];
}
5
TienLe

ウィンドウにはルートビューコントローラーが必要です。

AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;

UIWindow *window = delegate.window;
UIViewController *controller = [[UIViewController alloc] init]; 
window.rootViewController = controller;
UIView *aView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
aView.backgroundColor = [UIColor blackColor];
[controller.view addSubview:aView];
4
Nikos M.

以下を使用してビューを追加できます

[[[UIApplication sharedApplication] keyWindow] addSubview:YOUR_VIEW];
3
Shekhu

以下のコードを試してみてください...サブビューをウィンドウに追加するために

UIView *aView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
aView.backgroundColor = [UIColor blackColor];
[[UIApplication sharedApplication].keyWindow addSubview:aView];

//削除

[aView removeFromSuperview];

お役に立てば幸いです。

2
Vidhyanand

あなたはこれを見逃していると思います。一度確認してください。

[self.window makeKeyAndVisible];
2
Mahesh Agrawal

UIAlertViewは、別のUIWindowを作成し、showメソッドを呼び出すときにこのウィンドウをキーウィンドウとして設定します。したがって、独自のアラートビューを表示する場合は、UIWindowインスタンスを作成してそれを表示し、カスタムアラートビューをこの新しく作成されたウィンドウに追加します。

2
Nitheesh George