次のエラーが表示されます。
Storyboard (<UIStoryboard: 0x7ebdd20>) doesn't contain a view controller
with identifier 'drivingDetails'
これはコードです:
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"drivingDetails"];
controller.title = [[dao libraryItemAtIndex:indexPath.row] valueForKey:@"name"];
[self.navigationController pushViewController:controller animated:YES];
}
identifier
に既にUIStoryboard
を設定していますが、まだこのエラーが発生しています。
一定!私の場合、DriverDetailsのセグエの識別子だけでなく、tableViewControllerの識別子もDrivingDetailsとして設定する必要があります...私の写真を確認してください:
Navigation View Controllerも削除したため、2つのTable View Controllerが「プッシュ」アニメーションに直接接続されました。
***** XCODE 7.0の編集*****
storyboardIdを設定する必要があります(この場合、viewControllerはNavigation Controllerに埋め込まれています:
let lastMinVc = mainStoryBoard.instantiateViewControllerWithIdentifier("lastMinuteNavController") as! UINavigationController
将来の参考のために:
Storyboardsを使用してiOS 6で開発しています。
私は同じ問題を抱えていましたが、インスペクターに「識別子」フィールドが見つかりませんでした。代わりに、「ストーリーボードID」という名前のフィールドを、識別子に名前を付けるものに設定するだけです。このフィールドは、インスペクターの「IDインスペクターを表示」タブにあります。
[注-以下のコメントは、インスペクターでストーリーボードIDのすぐ下に「復元ID」フィールドを設定する必要があることもわかっていることを示しています。 [ストーリーボードIDを使用]をクリックするだけでは十分ではないようです。]
参考のために以下の画像があります:(この例では、クラスと同じ識別子に名前を付けています)
XCODE 7 | 8 | 9では、
ストーリーボードIDを変更して、このようなエラーが発生した場合、
ちょうどCLEANプロジェクト(CMD + SHIFT + K)
用語間に混乱がある場合があります。
// Swift 4
let storyboard = UIStoryboard(name: "StoryboardFileName", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "StoryboardID")
self.present(controller, animated: true, completion: nil)
"StoryboardFileName"
はストーリーボードのファイル名であり、ここではIDではありません。ここで"StoryboardID"
は実際にはIDインスペクターで手動で設定したIDです。時々、人々は2つの違いについて混乱し、最初の1つは実際にStoryboardIDであり、2つ目はViewControllerクラス名であると信じています。
このことについて混乱が見られるので、Swiftの多くの新しいプログラマーを同様の問題で引き付けるこの質問に投稿しようと思いました。
Xcode 6.3.2のStoryboard IDという名前のIdentity InspectorタブにあるIdentityで、Use Storyboard IDオプションをオンにしました。
ストーリーボードに新しいVCを追加した後にこの問題が発生しましたが、シミュレーターではなくデバイスのみでした。ストーリーボードのローカライズが複数あることが原因でした-VCはプライマリにのみ追加されました。他のローカリゼーション(そのうちの1つは私のiPhoneが使用しているもの)を削除しようとしましたが、まだエラーがありました。最後に、他のローカライズを再作成する必要がありましたwithそれぞれの新しいVC。
@Ravi Bhanushaliと同じ問題を持つ人のために、Swift 4ソリューションがあります:
let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
私はそれを見つけました...ストーリーボードのView Controllerをクリックし、VC属性インスペクターの左から3番目のアイコンをクリックしますWord IDをクリックしてstoryboardIDを表示します-コードから識別子を追加します、完了
コンパイラは次のエラーを表示します:
Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: 'Storyboard (<UIStoryboard: 0x7fedf2d5c9a0>) doesn't contain a
ViewController with identifier 'SBAddEmployeeVC''
ここでは、作成されたストーリーボードのオブジェクトは、ViewControllerを含むメインのストーリーボードではありません。 As ストーリーボードファイル作業対象はMain.storyboardです。そのため、Main.storyboardのオブジェクトの参照が必要です。
次のコードを使用してください:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
ここで、storyboardWithName
は、作業中のストーリーボードファイルの名前であり、bundle
は、ストーリーボードが含まれるバンドル(mainBundle
)を指定します。
IDインスペクター(左の3番目のアイコン)で「ストーリーボードID」を変更する必要があります。
そうでない場合、タイプミスがないことが確実な場合は、プロジェクトをクリーンアップしてみてください( "Product"-> "Clean"、または単にcommand + shift + K)。
いくつかのView ControllerにstoryboardIdentifier属性がありませんでした。
前:
<viewController
id="pka-il-u5E"
customClass="YourViewControllerName"
customModule="ModuleName"
customModuleProvider="target"
sceneMemberID="viewController">
後:
<viewController
storyboardIdentifier="YourViewControllerName" <----
id="pka-il-u5E"
customClass="YourViewControllerName"
customModule="ModuleName"
customModuleProvider="target"
sceneMemberID="viewController">
すべてをクリーニングしてXcodeを閉じても、問題は解決しません。
ViewControllerを削除し、新しい識別子を持つ新しいものを作成する必要がありました。
メインストーリーボードでそれぞれのビューコントローラーを選択し、storyboardIDをチェックして、その名前が名前を指定して使用する識別子で使用されているかどうかを確認します。
ここで私の最初の1つはstoryboardIDですvc = self.storyboard?.instantiateViewController(withIdentifier: "firstone")as! tabBarViewController
ストーリーボードIDとして識別子(@ "drivingDetails")を使用します。
識別子uを入力している間、適切なView Controllerが選択されていませんが、もう一度手順を繰り返してください。
私は同じエラーを受け取ったので、プロジェクトの次の変更を変更することでこれを修正できました。インスペクタパネルでクラス名について言及したので、問題は解決しました。 Goto->右パネルアイデンティティインスペクターカスタムクラスセクション
class:your class name(ViewController)
[ID]セクションのストーリーボードID:ストーリーボードID(viewController Name)
この後、そこにあるストーリーボードIDを使用するオプションをクリックします。これで問題は解決しました。私はそれがあなたを助けることを願っています...
上記の解決策をすべて試してもうまくいきませんでした。
私がしたことは:
そしてそれはうまくいきました。衝撃的なことは、インターフェイスビルダーでStoryboar IDを入力し、Xcodeを再度開いた後に削除/削除されたことです。
これが誰かを助けることを願っています。