使用Xcode 4.2在Interface Builder中使用UIApplicationDelegate

时间:2012-01-08 21:26:06

标签: iphone ios xcode ipad sdk

我的应用程序是基于视图的应用程序。我需要创建一个UINavigationController作为我的rootViewController

在以前版本的Xcode中,有一个名为mainWindow的xib文件,我们可以在其中:

  • 将我们的UIApplicationDelegate实施方案连接到UIApplication的{​​{1}}商店
  • delegateUIWindow
  • 相关联
  • UIApplicationDelegateUIViewController的{​​{1}}财产相关联。

但是现在(Xcode 4.2)不会创建这个xib文件!

那么如何创建自定义UIWindow并将其连接到InterfaceBuilder中的rootViewController实现?

以下是我的UINavigationController实施中的代码:

UIApplicationDelegate

1 个答案:

答案 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的步骤! ......而且毫无意义。

首先,创建应用程序:

enter image description here

打开main.m并将第四个参数替换为nil

enter image description here

创建一个新的xib,或者劫持现有的xib(我将在这里做),然后创建File的所有者类UIApplication

enter image description here

接下来,从工具箱中添加Object并将类更改为UIApplicationDelegate子类:

enter image description here

现在,切换回文件所有者并将delegate插座连接到您添加的UIApplicationDelegate。如果你正在做我做的事情并且劫持了现有的xib,请删除view引用。

enter image description here

现在从工具箱中添加UIWindow

enter image description here

现在添加一个'UIViewController from the toolbox. This is your custom UIViewController . If you want a UINavigationController or UITableViewController`只需添加它。

enter image description here

如果使用自定义UIViewController类,请在此处指定类:

enter image description here

UIWindow的{​​{1}}个电话插座连接到rootViewController

enter image description here

破解您的UIViewController界面并制作或修改UIApplicationDelegate媒体资源,使其成为window

enter image description here

切换到实现并删除任何设置窗口和根视图控制器的“毫无价值”代码。 (我在这里讽刺......这个简洁的代码完成了我们在这里所做的一切......只是通过编程而不是通过IB。)

enter image description here

切换回你的xib并连接IBOutlet的{​​{1}}个插座。

enter image description here

现在,在目标的部署信息中,将xib设置为“主界面”:

enter image description here

完成.... pshew!