2013-02-18 12 views
8
UIStoryboard* sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
    UIViewController* vc = [sb instantiateViewControllerWithIdentifier:@"SettingsViewController"]; 
    [[self navigationController] pushViewController:vc animated:YES]; 

ストーリーボードのNavigationControllerからViewControllerをプッシュしようとしていますが、このエラーが発生し続けます。エラー:このクラスはキーのキーコードに対応していません。keyPath

* Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<SettingsViewController 0x1f98f100> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key keyPath.' * First throw call stack: (0x31f4a3e7 0x39c3b963 0x31f4a0d5 0x327b87d9 0x327b4543 0x31ed08a5 0x33ef5e69 0x340e5b09 0x71aa3 0x33e1b31d 0x33e9dda9 0x32859657 0x31f1f857 0x31f1f503 0x31f1e177 0x31e9123d 0x31e910c9 0x35a6f33b 0x33dad2b9 0x6567d 0x3a068b20) libc++abi.dylib: terminate called throwing an exception

+0

関連:http://stackoverflow.com/questions/3088059/what-does-this-mean-nsunknownkeyexception-reason-this-class-is-not-key – jtbandes

答えて

1

使用この&チェック:

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
SettingsViewController *myVC = (SettingsViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"SettingsViewController"]; 
[self.navigationController pushViewController:myVC animated:YES]; 
+2

このコードは優れていますが、問題は解決しません。あなたがSettingsViewControllerで定義されたメソッドを呼び出すつもりでない限り、vcを汎用ビューコントローラとして宣言することは許容されます。 – danh

4

ほとんどの場合、ストーリーボードで定義されたSettingsViewControllerはIBOutletへの参照が含まれているキーパスと呼ばれるが、キーパスは、クラスで定義されていません。

対処するには、ストーリーボードのView Controllerを選択し、接続インスペクタ(右ペインの右端のタブ)を選択して接続を確認します。キーパスと呼ばれるものがありますが、おそらく "!"その近くに。その1つ(と "!"を持つ他の人)を削除してください。

41

「アイデンティティインスペクタ」タブの「ユーザ定義ランタイムアトリビュート」フィールドに何かを入力したため、このエラーが発生しました。 mystakeではKey Path列のデフォルトのkeyPath値を残していたため、問題が発生しました。

Screenshot from xcode interface builder

+0

非常に良い観察。ありがとう:) – staticVoidMan

+0

キーパス(layer.circleRadius)、その型(数値)と値(30)を変更する必要があります。例square.circleRadiusより円に四角形を変換する必要があるとします。高さ/ 2または幅/ 2) –

+0

すばらしい答えです。 – JAck

0

右 "キーパス" を見つけるために、ソースコードのようなオープンXIBファイルを、クリックしてください。

関連する問題