Я пишу приложение для iPhone с помощью Xcode 4.5 и iOS6. Я также создаю новый UIWindow
, чтобы иметь возможность управлять областью строки состояния (для отображения там сообщений и т.д.).
Я использую раскадровки, и мой метод appDelegate
выглядит следующим образом:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
return YES;
}
Сообщение не появляется в консоли, когда я помещаю его в метод с именем viewDidAppear
:
- (void)viewDidAppear:(BOOL)animated {
if (!window) {
window = [[SGStatusBar alloc] initWithFrame:CGRectZero];
window.frame = [[UIApplication sharedApplication] statusBarFrame];
window.alpha = 0.5f;
[self.view.window makeKeyAndVisible]; // has to be main window of app
window.hidden = NO;
}
}
Тот же метод, помещенный в viewDidLoad
, выдает предупреждение в консоли:
2012-12-27 11:34:20.838 NewApp[433:c07] Application windows are expected to have a root view controller at the end of application launch
Это потому, что я создал новый UIWindow
? Почему разница между этими двумя методами настолько велика?
И, что самое главное, как я могу избавиться от этого предупреждения, поместив код в метод viewDidLoad
?
EDIT:
Я столкнулся с той же проблемой здесь, но это не так, как я хотел бы ее решить (это на самом деле то, как я решаю это сейчас)
Я пробовал установить мой текущий ViewController в качестве моего контроллера корневого окна Windows, выполнив следующее:
ViewController *vcB = [[UIViewController alloc] init];
window.rootViewController = vcB;
Но я продолжаю получать предупреждение, в котором говорится:
Incompatible pointer types initializing 'ViewController *__strong' with an expression of type 'UIViewController *'