Iphone 带有Xcode 4.2的Interface Builder中的UIApplicationLegate
我的应用程序是基于视图的应用程序。我需要创建一个Iphone 带有Xcode 4.2的Interface Builder中的UIApplicationLegate,iphone,ios,xcode,ipad,sdk,Iphone,Ios,Xcode,Ipad,Sdk,我的应用程序是基于视图的应用程序。我需要创建一个UINavigationController作为我的rootViewController 在以前版本的Xcode中,有一个名为mainWindow的xib文件,我们可以在其中: 将我们的uiapplicationelegate实现连接到UIApplication的delegate出口 将ui窗口连接到ui应用程序公文包 将UIViewController连接到UIWindow的rootViewController属性 但是现在(Xcode 4.
UINavigationController
作为我的rootViewController
在以前版本的Xcode中,有一个名为mainWindow
的xib文件,我们可以在其中:
- 将我们的
实现连接到uiapplicationelegate
的UIApplication
出口delegate
- 将
连接到ui窗口
ui应用程序公文包
- 将
连接到UIViewController
的UIWindow
属性rootViewController
UINavigationController
并将其连接到我的UIApplicationLegate
实现
以下是我的UIApplicationLegate
实现中的代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
SDWebImageRootViewController *root = [[SDWebImageRootViewController alloc] initWithNibName:nil bundle:nil];
_navigationController = [[[UINavigationController alloc] initWithRootViewController:root] autorelease];
self.window.rootViewController = _navigationController;
[[_navigationController navigationBar] setBarStyle:UIBarStyleBlack];
[[_navigationController navigationBar] setTranslucent:YES];
[_window addSubview:[_navigationController view]];
}
首先,是的,即使在最新版本的Xcode中,您仍然可以使用IB来实现这一点,所以我不确定您是从哪里得到的 如果您想知道如何在没有IB的情况下指定应用程序委托,这相当简单: 在
main
方法中,只需使用应用程序委托的类名作为UIApplicationMain
的第四个参数:
int main(int argc, char *argv[])
{
@autoreleasepool
{
int retVal = UIApplicationMain(argc, argv, nil, @"APPLICATION_DELEGATE_CLASS_NAME");
return retVal;
}
}
事实上,当您从模板创建基于视图的应用程序时,默认情况下,Xcode 4.2会为您做到这一点(尽管它不使用静态字符串…老实说,这可能比我的建议要好,因为如果您使用内置重构,它会被重构,等等):
NSStringFromClass([AppDelegate类])
回答您的后续问题:好的,那我该怎么办?要在接口中连接UINC插座?
不用麻烦了
还是不相信我?好的这里有一个教程。。。十五步。。。而且毫无意义
首先,创建应用程序:
打开main.m
并将第四个参数替换为nil
:
创建一个新的xib,或者劫持现有的xib(我将在这里这么做),并使文件的所有者类UIApplication
接下来,从工具箱中添加一个对象
,并将该类更改为您的UIApplicationLegate
子类:
现在,切换回文件的所有者,并将委托
出口连接到您添加的uiapplicationelegate
。如果您正在执行我所做的操作并劫持了现有的xib,请删除视图
引用
现在从工具箱中添加一个ui窗口
现在从工具箱中添加一个“UIViewController。这是您的自定义
UIViewController。如果您想要一个
UINavigationController或
UITableViewController`只需添加它即可
如果使用自定义UIViewController
类,请在此处指定该类:
将UIWindow
的rootViewController
插座连接到您的UIViewController
:
打开uiapplicationelegate
界面,创建或修改窗口
属性,使其成为IBOutlet
切换到实现并删除设置窗口和根视图控制器的任何“无用”代码。(我在这里是在讽刺……这个简洁的代码完成了我们在这里所做的一切……只是通过编程而不是通过IB。)
切换回您的xib并连接您的UIApplicationLegate
窗口的出口
现在,在目标的部署信息中,将xib设置为“主界面”:
完成。。。。普修 +1,但我担心你讽刺地描述的事情会成为现实(非常感谢!!我希望在开始扩展应用程序之前做到这一点,我做了你所做的,但问题2:1-当我将文件所有者的类别更改为UIApplication时,我的outlets和actions会出现一个敌对图标,2-我添加了NSObject,并且…仍然无法在应用程序中识别我的outletsdelegate@Mc.Lover1-是的,因为那些不是UIApplication上的Outlet,它们是自定义视图控制器上的Outlet。去掉它们。你必须将它们连接到你在以后的步骤中添加的视图控制器。2-添加NSObject后,你必须更改类以指向你的应用程序委托。仔细阅读说明并尝试了解你在ea中的操作再次感谢你,史蒂夫,你很谦虚,但我做了你所做的!午餐后,应用程序接收SIGABRT
@Mc.Lover,没有更多细节,我不知道如何帮助你。