我的应用程序是基于视图的应用程序。我需要创建一个UINavigationController
作为我的rootViewController
。
在以前版本的Xcode中,有一个名为mainWindow
的xib文件,我们可以在其中:
UIApplicationDelegate
实施方案连接到UIApplication
的{{1}}商店delegate
与UIWindow
UIApplicationDelegate
与UIViewController
的{{1}}财产相关联。但是现在(Xcode 4.2)不会创建这个xib文件!
那么如何创建自定义UIWindow
并将其连接到InterfaceBuilder中的rootViewController
实现?
以下是我的UINavigationController
实施中的代码:
UIApplicationDelegate
答案 0 :(得分:8)
首先,是的,即使在最新版本的Xcode中,你仍然可以使用IB,所以我不确定你从哪里得到它。
如果您想知道如何在没有IB的情况下指定应用程序代理,那就非常简单了:
在main
方法中,只需使用您的应用委托代理的类名作为UIApplicationMain
的第4个参数:
int main(int argc, char *argv[])
{
@autoreleasepool
{
int retVal = UIApplicationMain(argc, argv, nil, @"APPLICATION_DELEGATE_CLASS_NAME");
return retVal;
}
}
事实上,当您从模板创建基于视图的应用程序时,Xcode 4.2默认为您执行此操作(虽然它不使用静态字符串...这可能比我的建议诚实,因为它会得到如果你使用内置的重构等重构,那么:)
NSStringFromClass([AppDelegate class])
回答您的后续问题:ok , then what should I do ? to connect the UINC outlet in interface ?
不要打扰。
还是不相信我?好......这是一个教程......这是FIFTEEN的步骤! ......而且毫无意义。
首先,创建应用程序:
打开main.m
并将第四个参数替换为nil
:
创建一个新的xib,或者劫持现有的xib(我将在这里做),然后创建File的所有者类UIApplication
。
接下来,从工具箱中添加Object
并将类更改为UIApplicationDelegate
子类:
现在,切换回文件所有者并将delegate
插座连接到您添加的UIApplicationDelegate
。如果你正在做我做的事情并且劫持了现有的xib,请删除view
引用。
现在从工具箱中添加UIWindow
。
现在添加一个'UIViewController from the toolbox. This is your custom
UIViewController . If you want a
UINavigationController or
UITableViewController`只需添加它。
如果使用自定义UIViewController
类,请在此处指定类:
将UIWindow
的{{1}}个电话插座连接到rootViewController
:
破解您的UIViewController
界面并制作或修改UIApplicationDelegate
媒体资源,使其成为window
。
切换到实现并删除任何设置窗口和根视图控制器的“毫无价值”代码。 (我在这里讽刺......这个简洁的代码完成了我们在这里所做的一切......只是通过编程而不是通过IB。)
切换回你的xib并连接IBOutlet
的{{1}}个插座。
现在,在目标的部署信息中,将xib设置为“主界面”:
完成.... pshew!