Ios UIStoryboard名称和捆绑包

Ios UIStoryboard名称和捆绑包,ios,xcode,Ios,Xcode,我有一行代码: [UIStoryboard storyboardWithName:(NSString *) bundle (NSBundle *)]; 和一个故事板文件。我在哪里实际插入控制器的名称,在哪里找到捆绑包 这是一个愚蠢的问题,但我无法理解这个名称参数是您的.storyboard文件的名称(没有扩展名) 包通常是应用程序的主包。通常,传递nil,以便运行时在默认情况下在主捆绑包中搜索情节提要文件(与传递[NSBundle mainBundle]相同)。实际上,iOS应用程序中通常只有

我有一行代码:

[UIStoryboard storyboardWithName:(NSString *) bundle (NSBundle *)];
和一个故事板文件。我在哪里实际插入控制器的名称,在哪里找到捆绑包


这是一个愚蠢的问题,但我无法理解这个
名称
参数是您的
.storyboard
文件的名称(没有扩展名)

包通常是应用程序的主包。通常,传递
nil
,以便运行时在默认情况下在主捆绑包中搜索情节提要文件(与传递
[NSBundle mainBundle]
相同)。实际上,iOS应用程序中通常只有一个捆绑包,它是表示IPA捆绑包的主捆绑包,因此
nil
是此参数的常用值)

例如,如果您有一个名为
MyStory.storyboard

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyStory" bundle:nil];

事实上,所有这些都得到了解释

故事板名称:bundle: 为指定的情节提要资源文件创建并返回情节提要对象

+(UIStoryboard*)故事板with name:(NSString*)name bundle:(NSBundle*)故事板bundleornil

参数

  • 名称
    不带文件扩展名的情节提要资源文件的名称。如果此参数为nil,此方法将引发异常
  • storyboardBundleOrNil
    :包含故事板文件及其相关资源的捆绑包。如果指定nil,此方法将在当前应用程序的主捆绑包中查找

一切都很简单

代码如下:

UIStoryboard *storyboard = 
[UIStoryboard storyboardWithName:@"MainStoryboard" 
                          bundle:[NSBundle mainBundle]];
其中是@“主情节提要”.Storyboard文件的名称。Bundle就是包含脚本文件的Bundle,通常是应用程序的主Bundle

例如,如果要访问某些UIViewController,以便将其推送到UINavigationController的堆栈中,则必须执行以下操作:

UIViewController *yourViewController = 
[storyboard instantiateViewControllerWithIdentifier:@"viewControllerIdentifier"];
您可以在Xcode的Identity Inspector中将标识符设置为UIViewController

希望它能帮助你

Swift 5版本:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIStoryboard(name: "Main", bundle: nil)

在本例中,我使用默认的“主”故事板文件作为参考。

小代码输入错误。在
bundle
之后添加冒号。为您的答案添加一些说明。虽然此代码可能会回答问题,但提供有关此代码回答问题的原因和/或方式的其他上下文可以提高其长期价值。也许可以分享如何从特定名称实例化新的UIStoryboard引用。还考虑传入<代码> [NSbBaseWiBeope] < /C> >而不是<代码> nIL/COD>。