我对Xcode中的目标概念非常陌生。我已按照此tutorial学习在同一项目中创建两个目标。我只想知道如何使目标A使用AppDelegateA.swift
作为其指定的应用程序委托,目标B使用AppDelegateB.swift
作为其指定的应用程序委托。因为在本教程中,它实际上教授如何从同一个AppDelegate制作两个应用程序。但我制作了两个(几乎)完全不同的应用程序,这些应用程序共享了大量资源和库。
虽然我们正在研究这个主题,但我是否也可以让目标A使用名为Main
的故事板,而目标B也使用名为Main
的故事板,但它们实际上是一个不同的故事板(但是在同一个项目中放在一起)?
答案 0 :(得分:3)
是的,您可以根据目标创建2个不同的进行以下更改:
项目中的
main.m
你可以做点什么
int main(int argc, char *argv[])
{
@autoreleasepool {
NSString *appDelegateName;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){
appDelegateName = NSStringFromClass([AppDelegateIPhone class]);
} else {
appDelegateName = NSStringFromClass([AppDelegateIPad class]);
}
return UIApplicationMain(argc, argv, nil, appDelegateName);
}
}
但IMO你不应该这样做。
而不是像苹果那样做,在app委托加载不同的视图控制器或不同的XIB。
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil] autorelease];
} else {
self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil] autorelease];
}
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
@end
答案 1 :(得分:0)
希望我的回答有助于第二部分包含基于目标的多个AppDelegate文件。 https://stackoverflow.com/a/43227300/2715840
对于使用多个目标的第一部分,您可以通过简单地对基本目标进行双击来实现,您将获得已经复制的plist,根据新目标更改名称或者将其保持为同名plist.info但在不同的路径中。为了分离代码文件(如Appdelegates),故事板和资产,或者firebase plist配置文件,您可以在上面找到我的答案,就像这些目的一样。
希望这会有所帮助。
答案 2 :(得分:0)
对我遇到的一个老问题的新答案。这些天的答案很简单: