私はこの絵コンテを持っています:
この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")
let storyboard = UIStoryboard(name: "Main_iPhone", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("POIListViewController") as! UIViewController
[〜#〜] edit [〜#〜]
ストーリーボード名を変更したら、プロジェクトをクリーンアップするだけです(CMD + SHIFT + K)。
プロジェクトを閉じて、もう一度開きます。識別子がなくなったことに気付いた場合は、自動保存の問題であるに違いありません。新しい識別子を入力した後、ストーリーボードファイルを保存するだけです。およびClean-Build-Run。
ローカリゼーションファイルのコピーが原因で、このような問題が発生しました。おそらくシミュレータには英語が含まれていますが、このガジェットには独自の言語があります。 2つのローカライズファイルを含むストーリーボードがあるかどうかを確認しますか?
私は同様の問題を抱えていました(デバイス上だけではなかったことを除いて)。
このスレッドの以前の提案はどれも私にとってはうまくいきませんでした。動作したのはIdentity Inspector(右側のユーティリティペイン)で、Storyboard IDフィールドにView Controller名(上のクラスフィールドと同じ名前)が入力されていることを確認することでした。
に変更してみてください:
let VC = self.storyboard!.instantiateViewControllerWithIdentifier("POIListViewController") as! POIListViewController