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