如何知道当前的故事板名称?

Posted

技术标签:

【中文标题】如何知道当前的故事板名称?【英文标题】:How to know the current storyboard name? 【发布时间】:2013-07-17 10:04:01 【问题描述】:

我想知道当前加载的故事板是什么,我使用了下面的代码,但它仍然让我得到主故事板而不是当前的。

//This get me the Main storyboard 
[[NSBundle mainBundle].infoDictionary objectForKey:@"UIMainStoryboardFile"];

【问题讨论】:

【参考方案1】:

基于上面 Durican 的回答:

在视图控制器中:

UIStoryboard * storyboard = self.storyboard;
NSString * storyboardName = [storyboard valueForKey:@"name"];

(名称将不包括“.storyboard”文件扩展名。)

【讨论】:

完美解决方案。谢谢。 问题。你是怎么想到这个的?该文档没有说明名称属性。我也看不到查询所有键的方法。你有没有从 IB 标签上看到它? 只是一个完整的猜测,我测试了它,结果证明我是对的。 :) 这是私有 API,所以要小心。【参考方案2】:

如果您正在使用实例化的 UIViewController 类或通过情节提要进行切换,最简单的方法是:

UIStoryboard *storyBoard = self.storyboard;

如果你在 UIViewController 中的 UIView 类中

UIResponder *responder = self;
while (![responder isKindOfClass:[UIViewController class]]) 
    responder = [responder nextResponder];
    if (nil == responder) 
        break;
    

UIViewController *viewController = (UIViewController *) responder;
UIStoryboard *storyBoard = viewController.storyboard;

【讨论】:

我怎样才能得到名字??【参考方案3】:

这样做,这可能会解决您的问题

NSString *storyboardName;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
    storyboardName = @"iPad";
 else 
    storyboardName = @"iPhone";

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:storyboardName bundle:nil];

【讨论】:

可能你不明白我的问题,我想知道名字没有设置故事板的名字 你有没有通过这个链接:***.com/questions/14928817/…

以上是关于如何知道当前的故事板名称?的主要内容,如果未能解决你的问题,请参考以下文章

我有一个故事板,我推动这个。我想在启动控制器之前获取情节提要上的控件名称。如何?

在将动画名称注册到目标 Frameworkelements 后,将 2+ 故事板的孩子移动到一个故事板

第一个故事板要显示

返回故事板当前视图控制器标识符

你如何摆脱swift中主要故事板的代码?

在WPF中,有没有办法在后面的代码中获取故事板动画值的当前值?