cob*_*ero 3 objective-c xib ios
我有一些麻烦,使用xib而不是故事板启动iOS应用程序.问题是我得到一个黑屏和第一个视图控制器没有被调用(添加断点到viewDidLoad方法).
在app委托标题中,我已声明:
@property (strong, nonatomic) UIWindow window;
@property (strong, nonatomic) ViewController *viewController;
Run Code Online (Sandbox Code Playgroud)
在didFinishLaunchingWithOptions方法中我有这个实现:
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
navController.navigationBarHidden = YES;
self.window.rootViewController = navController;
[self.window makeKeyAndVisible];
Run Code Online (Sandbox Code Playgroud)
看一些论坛,我发现我应该分配窗口,所以我把它作为函数的第一行添加
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
Run Code Online (Sandbox Code Playgroud)
问题是,当我这样做时,应用程序从didFinishLaunchingWithOptions方法返回后崩溃(SIGABRT没有任何跟踪).
我还试图创建navController一个属性,并且还实例化一个UIViewController启动相同xib 的默认类
我究竟做错了什么?
感谢致敬
希望这可以帮助你:
删除视图控制器和故事板文件以及新的viewController.h,viewController.hm,viewController.xib文件.
#import "AppDelegate.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
@synthesize viewCOntrollerobj;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.viewCOntrollerobj = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:self.viewCOntrollerobj];
//navController.navigationBarHidden = YES;
self.window.rootViewController = navController;
[self.window makeKeyAndVisible];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
好吧,我终于明白了。
我要做的就是再次添加
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
之后,只需删除 .h、.m 和 .xib 并重新创建它们即可。
无论出于何种原因,它现在工作正常。