启动没有故事板的ios项目

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 的默认类

我究竟做错了什么?

感谢致敬

sou*_*mya 8

希望这可以帮助你:

删除视图控制器和故事板文件以及新的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)

在此输入图像描述


cob*_*ero 1

好吧,我终于明白了。

我要做的就是再次添加

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

之后,只需删除 .h、.m 和 .xib 并重新创建它们即可。

无论出于何种原因,它现在工作正常。