我有这行代码:
[UIStoryboard storyboardWithName:(NSString *) bundle (NSBundle *)];
和故事板文件。我在哪里实际插入控制器的名称,在哪里可以找到捆绑包?
这是一个愚蠢的问题,但我无法弄清楚
一切都非常简单!
这是代码:
UIStoryboard *storyboard =
[UIStoryboard storyboardWithName:@"MainStoryboard"
bundle:[NSBundle mainBundle]];
@"Main Storyboard"在哪里是您的.storyboard文件的名称。Bundle 只是包含你的.storyboard文件的包,通常是你的应用程序的主要包。
如果您想访问某些 UIViewController,例如,为了将其推送到 UINavigationController 的堆栈,那么您必须这样做:
UIViewController *yourViewController =
[storyboard instantiateViewControllerWithIdentifier:@"viewControllerIdentifier"];
您可以在 Xcode 的 Identity Inspector 中将 Identifier 设置为您的 UIViewController!
希望对你有帮助!
name
参数是文件的名称.storyboard
(不带扩展名)。
通常bundle
是您的应用程序的主要捆绑包。通常,您通过nil
,以便运行时默认在主包中搜索您的故事板文件(与您通过相同[NSBundle mainBundle]
)。在实践中,iOS 应用程序中通常只有一个包,它是代表 IPA 包的主包,因此nil
该参数的常用值也是如此)
例如,如果你有一个名为MyStory.storyboard
your 的故事板,你会写:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyStory" bundle:nil];
实际上,所有这些都在 Apple 文档中对此方法进行了解释。
故事板名称:捆绑:
为指定的故事板资源文件创建并返回一个故事板对象。
+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil
参数
name
:故事板资源文件的名称,不带文件扩展名。如果此参数为 nil,则此方法引发异常。storyboardBundleOrNil
:包含故事板文件及其相关资源的包。如果您指定 nil,此方法会在当前应用程序的主包中查找。
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
斯威夫特 5 版本:
UIStoryboard(name: "Main", bundle: nil)
在此示例中,我使用默认的“主要”故事板文件作为参考。