我有这个故事板:
使用此ViewController:
我有这个代码来实现我的VC:
let VC = UIStoryboard(name: "Main_iPhone", bundle: nil).instantiateViewControllerWithIdentifier("POIListViewController")
当我在模拟器上运行时,一切正常。
但是当我在真实设备上启动时,我有这个例外:
2016-07-12 10:56:19.073 App-Ely[1935:562264] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Storyboard (<UIStoryboard: 0x185481b0>) doesn't contain a view controller with identifier 'POIListViewController''
*** First throw call stack:
(0x2a23b5f7 0x37aadc77 0x2dc36f25 0x182b8c 0x182dd0 0x12d99f 0x2a1f3f15 0x2a14ee4d 0x2ae83ec1 0x13e0d5 0x168a2d 0x2d7f9607 0x2d8ab0a7 0x2d75d1f1 0x2d6d8eff 0x2a202015 0x2a1ff6f9 0x2a1ffafb 0x2a14cb31 0x2a14c943 0x3152c051 0x2d7426f1 0x16fce3 0x38049aaf)
libc++abi.dylib: terminating with uncaught exception of type NSException
编辑:
我的故事板已正确加载:
let storyboard = UIStoryboard(name: "Main_iPhone", bundle: nil)
// 'storyboardName' contains "Main_iPhone"
let storyboardName : String = storyboard.valueForKey("name") as! String
let VC = storyboard.instantiateViewControllerWithIdentifier("POIListViewController")
答案 0 :(得分:27)
let storyboard = UIStoryboard(name: "Main_iPhone", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("POIListViewController") as! UIViewController
修改强>
只需清理您的项目(CMD + SHIFT + K),因为您更改了我认为的故事板名称。
答案 1 :(得分:1)
关闭项目并再次打开。 如果您注意到标识符已消失,那么它必然是自动保存的问题。 只需在设置新标识符后保存Storyboard文件即可。 和清洁 - 建立 - 运行。
答案 2 :(得分:0)
尝试将其更改为:
let VC = self.storyboard!.instantiateViewControllerWithIdentifier("POIListViewController") as! POIListViewController
答案 3 :(得分:0)
我遇到了类似的问题(除了它不仅仅是在设备上)。
此主题中之前的任何建议都不适合我。有效的方法是使用Identity Inspector(在右侧的Utilities窗格中),并确保Storyboard ID字段也填充了View Controller名称(与其上方的Class字段相同)。
答案 4 :(得分:0)
由于本地化文件的副本,我遇到了这样的问题。模拟器可能包括英语,但是此小工具具有自己的语言。 看看您是否有一个带有两个本地化文件的情节提要?