【发布时间】:2017-08-31 06:00:08
【问题描述】:
我有以下代码:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyViewController" bundle:nil];
UINavigationController *navControllerInstance = [storyboard instantiateViewControllerWithIdentifier:NSStringFromClass([MyViewController class])];
当我使用目标时,我的问题是 [MyViewController class] 返回 "MyTarget_2.MyViewController" 然后我的应用程序崩溃,因为 "'Storyboard (<UIStoryboard: 0x600001e65d80>) doesn't contain a view controller with identifier "
我有两个目标: MyTarget 和 MyTarget_2,只有最后一个失败。
我不明白为什么 [MyViewController class] 返回 MyTarget.MyViewController。当我开始一个新项目时,这不会发生,只返回 MyViewController 。为什么会有这样的差异?
这似乎是相关的,因为我使用的是 swift+objective-c Calling NSStringFromClass on a Swift Class in Objective-C returns module mangled name
【问题讨论】:
-
简单的解决方案将使用字符串@"MyViewController" 或为该字符串定义一些常量并使用它而不是从
NSStringFromClass...派生它。你有避免它的原因吗? -
“当我使用目标时……”是什么意思?你能完成错误信息吗? “...不包含带有标识符的视图控制器...”?
-
@AndréSlotta 我的意思是,当我使用 MyTarget 编译时一切正常,但是当我使用 MyTarget_2 编译时,我崩溃了。
-
@VivekMolkar 你是对的,但我正在寻找一个优雅的解决方案,我认为这可能会成为市长的问题。
-
您确定 all 故事板和类都包含在 all 目标中吗?错误消息中的 identifier 是什么?您没有完全粘贴它...