Ios 从不同的Xcode项目加载情节提要

Ios 从不同的Xcode项目加载情节提要,ios,iphone,objective-c,xcode,Ios,Iphone,Objective C,Xcode,我有两个不同但相关的项目。父项目A有一个故事板。子项目B(理论上)扩展了A的功能,需要在其AppDelegate中实例化A的主情节提要。在我的xcode工作区中,我将父项目A作为链接项目包含在子项目B中,并且我可以看到所有文件。我正在应用程序中使用以下代码:didFinishLaunchingWithOptions: UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"iPhone.storyboard" bundle:[N

我有两个不同但相关的项目。父项目A有一个故事板。子项目B(理论上)扩展了A的功能,需要在其AppDelegate中实例化A的主情节提要。在我的xcode工作区中,我将父项目A作为链接项目包含在子项目B中,并且我可以看到所有文件。我正在应用程序中使用以下代码:didFinishLaunchingWithOptions:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"iPhone.storyboard" bundle:[NSBundle mainBundle]];
MainViewController *vc = (MainViewController *)[storyboard instantiateInitialViewController];
_window.rootViewController = vc;
[self.window makeKeyAndVisible];

代码在带有名称行的storyboard运行时失败,我假设是因为iPhone.storyboard在B中不立即可用,并且它不知道如何在A中查找它。实际的storyboard文件位于磁盘上子项目B的项目文件夹外的另一个文件夹中

它与B和A无关。项目中的文件可以位于任何位置。您的错误发生在运行时。这与你正在构建和运行的应用程序有关。想想这句话是怎么说的:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"iPhone.storyboard" bundle:[NSBundle mainBundle]];
所以你在这里声称,在这个应用程序的主捆绑包中有一个名为iPhone.storyboard的故事板。但是没有。应用程序正在构建,而您没有做任何事情来将情节提要作为该过程的一部分复制到应用程序包中。这就是你需要做的

要使情节提要位于主捆绑包中,请将其添加到此应用程序的复制捆绑包资源构建阶段


(当然,现在可能还有其他问题,例如,如果本故事板中提到的类不属于此应用程序的一部分。但这不是您的问题所在。)

它与B和A无关。项目中的文件可以位于任何位置。您的错误发生在运行时。这与你正在构建和运行的应用程序有关。想想这句话是怎么说的:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"iPhone.storyboard" bundle:[NSBundle mainBundle]];
所以你在这里声称,在这个应用程序的主捆绑包中有一个名为iPhone.storyboard的故事板。但是没有。应用程序正在构建,而您没有做任何事情来将情节提要作为该过程的一部分复制到应用程序包中。这就是你需要做的

要使情节提要位于主捆绑包中,请将其添加到此应用程序的复制捆绑包资源构建阶段


(当然,现在可能还有其他问题,例如,如果本故事板中提到的类不属于此应用程序的一部分。但这不是您的问题所在。)

它与B和A无关。项目中的文件可以位于任何位置。您的错误发生在运行时。这与你正在构建和运行的应用程序有关。想想这句话是怎么说的:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"iPhone.storyboard" bundle:[NSBundle mainBundle]];
所以你在这里声称,在这个应用程序的主捆绑包中有一个名为iPhone.storyboard的故事板。但是没有。应用程序正在构建,而您没有做任何事情来将情节提要作为该过程的一部分复制到应用程序包中。这就是你需要做的

要使情节提要位于主捆绑包中,请将其添加到此应用程序的复制捆绑包资源构建阶段


(当然,现在可能还有其他问题,例如,如果本故事板中提到的类不属于此应用程序的一部分。但这不是您的问题所在。)

它与B和A无关。项目中的文件可以位于任何位置。您的错误发生在运行时。这与你正在构建和运行的应用程序有关。想想这句话是怎么说的:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"iPhone.storyboard" bundle:[NSBundle mainBundle]];
所以你在这里声称,在这个应用程序的主捆绑包中有一个名为iPhone.storyboard的故事板。但是没有。应用程序正在构建,而您没有做任何事情来将情节提要作为该过程的一部分复制到应用程序包中。这就是你需要做的

要使情节提要位于主捆绑包中,请将其添加到此应用程序的复制捆绑包资源构建阶段


(当然,现在可能还有其他问题,例如,如果此故事板中引用的类不属于此应用程序的一部分。但这不是您的问题所在。)

此外,我认为您不应该在故事板的字符串名称中包含后缀
.storyboard
。扩展可能确实是问题所在。请参阅“参数名称:不带文件扩展名的情节提要资源文件的名称”。这个答案确实很有用,谢谢matt。至于扩展名,我知道这个问题,我只是补充说,为了确保每个人都理解这是一个故事板文件,但看起来我只是添加了更多的混淆。而且我认为您不应该在故事板的字符串名称中包含后缀
.storyboard
。扩展名可能确实是问题所在。请参阅“参数名称:不带文件扩展名的情节提要资源文件的名称”。这个答案确实很有用,谢谢matt。至于扩展名,我知道这个问题,我只是补充说,为了确保每个人都理解这是一个故事板文件,但看起来我只是添加了更多的混淆。而且我认为您不应该在故事板的字符串名称中包含后缀
.storyboard
。扩展名可能确实是问题所在。请参阅“参数名称:不带文件扩展名的情节提要资源文件的名称”。这个答案确实很有用,谢谢matt。至于扩展名,我知道这个问题,我只是补充说,为了确保每个人都理解这是一个故事板文件,但看起来我只是添加了更多的混淆。而且我认为您不应该在故事板的字符串名称中包含后缀
.storyboard
。扩展名可能确实是问题所在。请参阅“参数名称:不带文件扩展名的情节提要资源文件的名称”。这个答案确实很有用,谢谢matt。至于扩展名,我知道这个问题,我只是为了确保每个人都理解它是一个故事板文件而添加了它,但看起来我只是添加了更多的混淆。