UIStoryboard名称和包

Ale*_*dro 11 xcode ios

我有这行代码:

[UIStoryboard storyboardWithName:(NSString *) bundle (NSBundle *)];
Run Code Online (Sandbox Code Playgroud)

和故事板文件.我在哪里插入控制器的名称,以及在哪里找到捆绑包?

这是一个愚蠢的问题,但我无法弄清楚

Ana*_*att 14

一切都非常简单!

这是代码:

UIStoryboard *storyboard = 
[UIStoryboard storyboardWithName:@"MainStoryboard" 
                          bundle:[NSBundle mainBundle]];
Run Code Online (Sandbox Code Playgroud)

@"Main Storyboard"在哪里是.storyboard文件的名称.Bundle只是包含.storyboard文件的包,通常是您应用的主要包.

如果你想访问某些UIViewControllers,例如,为了将它推送到你的UINavigationController的堆栈,你必须这样做:

UIViewController *yourViewController = 
[storyboard instantiateViewControllerWithIdentifier:@"viewControllerIdentifier"];
Run Code Online (Sandbox Code Playgroud)

您可以在Xcode的Identity Inspector中将Identifier设置为您的UIViewController!

希望它能帮到你!


Ali*_*are 8

name参数是你的名字.storyboard的文件(不带扩展名).

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

例如,如果您有一个名为的故事板,MyStory.storyboard您会写:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyStory" bundle:nil];
Run Code Online (Sandbox Code Playgroud)

实际上,所有这些都在此方法的Apple文档中进行了解释.

storyboardWithName:包:

为指定的Storyboard资源文件创建并返回storyboard对象.

+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil

参数

  • name:没有文件扩展名的storyboard资源文件的名称.如果此参数为nil,则此方法引发异常.
  • storyboardBundleOrNil:包含故事板文件及其相关资源的捆绑包.如果指定nil,则此方法将在当前应用程序的主包中查找.


小智 5

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
Run Code Online (Sandbox Code Playgroud)