Xcode 4 не будет отображать главный экран приложения
После перехода на Xcode 4 я подумал, что смогу построить и запустить свое приложение точно так же, как в Xcode 3.
Оказывается, я не могу.
Xcode 4 имеет забавный способ никогда не показывать контроллер представления приложения, что странно.
Я могу сказать, что Apple в конечном итоге заставит нас переключиться, что приведет к неработоспособности моего приложения.
Доходит до application:didFinishLaunchingWithOptions:
без каких-либо ошибок, прежде чем зависать. В конечном итоге приложение вылетает на устройстве, но в симуляторе всегда остается на Default.png.
Я думал, что могу пойти и отредактировать application:didFinishLaunchingWithOptions:
Метод создания экземпляра самого контроллера представления и добавление его в окно - только для того, чтобы показать, что он тоже не работает.
После многочисленных неудачных попыток - создания отдельных окон UIWindows для контроллера основного вида - я решил добавить его в контроллер навигации.
Тогда удача меня поразила - но только в самых простых формах. Я посмотрел в журнале и вижу, что applicationDidBecomeActive:
был вызван.
Но, как обычно, нет такой удачи с каким-либо видом отображения.
Затем я решил посмотреть, смогу ли я добавить в окно UIView с синим фоновым цветом и несколькими элементами пользовательского интерфейса (кнопки, метки и т. Д.) И посмотреть, сработает ли это.
Как ни странно, это произошло.
Но почему не для контроллера основного вида? Ни разу в Xcode 4 мне не удавалось успешно запустить приложение (даже открыть его после сборки не удается). Я попытался изменить компилятор так же, как в Xcode 3, не повезло.
Я, честно говоря, очень смущен тем, почему контроллер представления приложения не будет отображаться.
Для тех, кто хочет дать ему попытку понять, почему он не работает, это будет с благодарностью.
Вот код для AppDelegate, если вам нужен код для контроллера представления, я могу вставить его сюда, однако это более 2000 строк.
В любом случае, вот файл.m:
#import "DocumentationAppDelegate.h"
#import "DocumentationViewController.h"
@implementation DocumentationAppDelegate
@synthesize window;
@synthesize viewController;
@synthesize navigationController;
- (void)applicationWillEnterForeground:(UIApplication *)application {
NSLog(@"In method %@, which is in class %@.", NSStringFromSelector(_cmd), NSStringFromClass([self class]));
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSLog(@"In method %@, which is in class %@.", NSStringFromSelector(_cmd), NSStringFromClass([self class]));
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSLog(@"In method %@, which is in class %@.", NSStringFromSelector(_cmd), NSStringFromClass([self class]));
DocumentationViewController *vc = [[DocumentationViewController alloc] init];
UINavigationController *controller = [[UINavigationController alloc] initWithRootViewController:vc];
controller.navigationBarHidden = YES;
UIWindow *win = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[win addSubview:controller.view];
[win makeKeyAndVisible];
return YES;
}
- (void)applicationWillTerminate:(UIApplication *)application {
}
- (void)dealloc {
[window release];
[super dealloc];
}
@end
и.h
#import <UIKit/UIKit.h>
@class DocumentationViewController;
@interface DocumentationAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
DocumentationViewController *viewController;
UINavigationController *navigationController;
}
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet DocumentationViewController *viewController;
@end
Если бы кто-нибудь мог помочь мне здесь, это было бы очень признательно.
1 ответ
У вашего делегата приложения уже есть окно свойств, viewController и navigationController. Таким образом, вы можете иметь приложение:didFinishLaunchingWithOptions: метод, подобный этому,
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
viewController = [[DocumentationViewController alloc] init];
navigationController = [[UINavigationController alloc] initWithRootViewController:vc];
navigationController.navigationBarHidden = YES;
[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible];
return YES;
}