Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS-通过代码加载导航控制器_Ios_Xib - Fatal编程技术网

iOS-通过代码加载导航控制器

iOS-通过代码加载导航控制器,ios,xib,Ios,Xib,我有一个通过项目向导设置的导航控制器。当前,当应用程序启动时,将自动创建并显示导航控制器 我现在需要通过代码控制导航控制器的显示,而不是通过.xib魔术。如何禁用MainWindow.xib/RootViewController.xib的自动创建?我承认我不知道到底发生了什么,也不知道向导设置的MainWindow.xib和RootController.xib之间的关系 这方面的任何参考或代码片段都会很有帮助。。 谢谢 要创建不带nib的根导航控制器: 在应用程序代理中,您应该看到以下内容: -

我有一个通过项目向导设置的导航控制器。当前,当应用程序启动时,将自动创建并显示导航控制器

我现在需要通过代码控制导航控制器的显示,而不是通过.xib魔术。如何禁用MainWindow.xib/RootViewController.xib的自动创建?我承认我不知道到底发生了什么,也不知道向导设置的MainWindow.xib和RootController.xib之间的关系

这方面的任何参考或代码片段都会很有帮助。。
谢谢

要创建不带nib的根导航控制器:

在应用程序代理中,您应该看到以下内容:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    // Add the navigation controller's view to the window and display.

    self.window.rootViewController = self.navigationController;
    [self.window makeKeyAndVisible];
    return YES;
}
self.navigationController
指从MainWindow.xib加载的导航控制器(此文件的名称在应用程序的Info.plist文件中指定;请参见下文)

打开MainWindow.xib并断开应用程序代理的
navigationController
属性,然后删除“对象”选项板中的导航控制器(而不是窗口)对象

从应用程序代理头文件中的
navigationController
@属性声明中删除IBOutlet属性(因为它将不再从nib文件连接)

将应用程序代理中的代码替换为以下内容:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    RootViewController *rootViewController = [[[RootViewController alloc] initWithNibName:nil bundle:nil] autorelease];
    self.navigationController = [[[UINavigationController alloc] initWithRootViewController:rootViewController] autorelease];

    self.window.rootViewController = self.navigationController;
    [self.window makeKeyAndVisible];
    return YES;
}

要创建不带笔尖的主窗口:

你可能不需要这样做(我也不推荐),但既然你(有点)要求

删除MainWindow.xib

在main.m中,将UIApplicationMain的最后一个参数替换为应用程序委托的名称(不带扩展名)。例如:

int retVal = UIApplicationMain(argc, argv, nil, @"TestProjectAppDelegate");
打开Info.plist文件并删除以下两行:

<key>NSMainNibFile</key>
<string>MainWindow</string>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

    // The rest stays the same...
}