在我的xcode项目中有2个appdelegate类。它会以这种方式工作。我有2个视图控制器和相应的视图控制器类。如何将应用程序委托类连接到故事板中的视图控制器。是否可以为项目设置多个应用程序代理?
答案 0 :(得分:5)
您应该只使用一个应用程序委托。
如果您有2个委托类会怎样?答案是没有。
它只会响应项目主类中的一个引用。
main方法将如下所示,
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
用于通用应用程序,
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
// load viewcontroller 1
}
else
{
// load viewcontroller 2
}
我希望这会有所帮助。
答案 1 :(得分:2)
你真的应该只使用一个AppDelegate
作为通用应用程序。您可以使用它来分享您将在那里做的常见事情。如果您需要针对设备类型执行某些操作(例如 - iPhone或iPad),那么您可以执行如下所示的三元表达式:
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? NSLog(@"Load view for iPad") : NSLog(@"Load view for iPhone");
答案 2 :(得分:2)
首先,你不知道如何得到两个AppDelegate
或者为什么需要它,但如果你想同时使用两个,那就不可能了。但是,您可以拨打特定的AppDelegate
,这样您就需要在main.m
上调用AppDelegate
。虽然我没有尝试过。但我想在AppDelegate
方法中didFinishLaunchingWithOptions
而不是main.m
制定条件。祝你好运。
return UIApplicationMain(argc, argv, nil, (yourCoditionHere)?NSStringFromClass([AppDelegate class]):NSStringFromClass([AppDelegate1 class]));
答案 3 :(得分:1)
只需使用单一的。您可以使用 - [[UIApplication sharedApplication] delegate]
在view-controller中使用app-delegate类。这将返回app-delegate类的实例。
答案 4 :(得分:1)
不,您不能为应用程序设置两个类AppDelegate
。
查看main function
,我们将其设置为AppDelegate
...
int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);
在这个函数中,我们只能通过发送类名作为参数来设置一个AppDelegate
(NSStringFromClass([AppDelegate class])
- > 这是xcode
项目默认设置的Xcode
和UIApplication
是一个单例类,因此我们只能为应用程序设置一个AppDelegate
答案 5 :(得分:0)
答案是否定的。 Appdelegate是一个单身人士。