iAd の GKTurnBasedMatchmakerViewController と BannerViewController の使用に関連する警告を受け取りました。その警告は次のとおりです。
Presenting view controllers on detached view controllers is discouraged <RootViewController: 0x14cd143c0>
以下に示す一連のコードで、この警告が発生する原因は何ですか?
AppDelegate.h 内
@interface AppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
RootViewController *viewController;
}
AppDelegate.m 内
- (void) applicationDidFinishLaunching:(UIApplication*)application {
viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];
[window setRootViewController:viewController];
[window addSubview: viewController.view];
}
次に、ユーザーがホーム画面の [再生] ボタンを押すと、最初に次のようにゲーム センター ビュー コントローラーを開きます (2 行目で、appDelegate で設定された rootViewController と等しい presentingViewController を設定していることに注意してください)。
AppDelegate * theAppDelegate = (AppDelegate *) [UIApplication sharedApplication].delegate;
self.presentingViewController = theAppDelegate.viewController;
GKTurnBasedMatchmakerViewController *mmvc = [[GKTurnBasedMatchmakerViewController alloc] initWithMatchRequest:request];
[presentingViewController presentViewController: mmvc animated: YES completion:nil];
上記のコードを実行すると、新しいシーンが読み込まれます。このシーンは、私の GameSelectionLayer.h に次のように記述されています。
@interface GameSelectionLayer : CCLayer <InAppStoreControlLayerDelegate> {
...
RootViewController *viewController;
AppDelegate *app;
BannerViewController *bannerViewController;
}
次に、GameSelectionLayer.mm で、次のように bannerViewController onEnter をロードします。
-(void)onEnter {
[super onEnter];
app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
viewController = [(AppDelegate *)[[UIApplication sharedApplication] delegate] viewController];
bannerViewController = [[BannerViewController alloc] initWithContentViewController:viewController];
app.window.rootViewController = bannerViewController;
}
上記のコードを実行すると、上記の警告が表示されます。この警告の原因となっている私が間違っていると思われることを教えてください。