0

UINavigationbar と UIscrollView を UIView(SecondView) に追加しました。firstView でボタンをクリックすると、secondView に移動します。ボタンクリック時:

 SecondView *secondview=[[SecondView alloc]initWithNibName:@"SecondView" bundle:nil];
 [self presentModalViewController: secondview animated:NO]; //error at this line 
 [secondview release];

secondView.h で

@property(nonatomic,retain)IBOutlet UINavigationBar *navigationBar;
@property(nonatomic,retain)IBOutlet UIScrollView *testscroll;

SecondView.m:

@synthesize navigationBar,testscroll;

しかし、次のようなエラーが発生します:

キャッチされない例外 'NSUnknownKeyException' が原因でアプリを終了しています。理由: SecondView setValue:forUndefinedKey:]: このクラスは、キー navigationBar のキー値コーディングに準拠していません。

私の secondView.xib は次のようなものです:

どこが間違っているのか理解できませんでしたか?

4

8 に答える 8

9

このエラーは通常、xib にアウトレットを作成した後、誤って (または故意に) ioutlet オブジェクトを削除した場合に発生します..またはその逆..

そのため、xib の ioutlet 接続を注意深く確認してください。

それが役立つことを願っています

于 2013-01-04T06:08:35.800 に答える
2

スペルを確認してください:

@property(nonatomic,retain)IBOutlet UINavigationBar *navigationBar;

キャッチされない例外 'NSUnknownKeyException' が原因でアプリを終了しています。理由: SecondView setValue:forUndefinedKey:]: このクラスは、キー ナビゲーションバーのキー値コーディングに準拠していません。

navigationBarとの違いに注意してくださいnavigationbar。大文字と小文字が区別されます。

于 2013-01-04T06:05:42.853 に答える
1

このようにナビゲーションバーでModelViweControllerを表示できます:-

SecondView *objSecondView = [[SecondView alloc] initWithNibName:@"SecondView" bundle:nil];
UINavigationController *navbar = [[UINavigationController alloc] initWithRootViewController:objSecondView];

// add navigation bar image at hear

     UIImage *image = [UIImage imageNamed:@"nav_launcher.png"];
                [navbar.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
     navbar.navigationBar.tintColor=[UIColor whiteColor];

     [self presentModalViewController:navbar animated:YES];

次のように、あるビューを別のビューにプッシュできます。-

SecondView *objSecondView =[[SecondView alloc]initWithNibName:@"SecondView" bundle:nil];
[self.navigationController pushViewController:objSecondView animated:YES];

ノート

このコード行に間違ったペン先名を入れているために、エラーが発生することがあります。initWithNibName:@"SecondView" bundle:nil];

アップデート

SecondViewcontrollerでナビゲーションバーの錫画像を追加する必要はありません。barbuttonItem、tincolor、navigatinBackgroudnColorなどのすべてのものを追加できます。

于 2013-01-04T06:01:08.977 に答える
0
  1. 誤ったケースについては、Rakesh が正しい回答を提供しました (アウトレットが削除されました - xib やストーリーボードを正確に確認する必要があります)。このような場合、アウトレットはソースのどこでも名前が変更されますが、ストーリーボードでは変更されません。そのような場合、ストーリーボードでもアウトレットの名前を正確に変更してください。

    grep -r --include "*.storyboard" navigationBar .

  2. XCode が xib をキャッシュして、動作を修正します。
    • クリーンビルド
    • デバイス/シミュレーターからアプリを削除する
    • アプリを再起動します シミュレーターの再起動も必要になる場合があります (私にとっては、デバイスには必要ありませんでした)
于 2015-10-22T06:22:46.080 に答える
0

この問題が再び発生する場合は、次のことを試してください: [ファイルの所有者] を選択し、[接続インスペクター] (右ペインの上部) をクリックすると、すべてのアウトレットが表示されます。このような兆候を探してください (!)アウトレットが見つからないことを示す小さな円の上にあります。適切にリンクするか、アウトレットを削除するだけです。

于 2015-01-06T05:54:03.477 に答える
0

pushViewController:UIViewController をプッシュするために使用されます。SecondViewUIViewControllerではなく、UIViewのようです。

于 2013-01-04T06:04:31.213 に答える
0

私はそれを自分で解決しました。私は何も間違っていませんでした。すべてがOKでした。新しいビューを追加し、同じ接続を作成して取得しました.xcodeでこれが定期的に発生する理由がわかりません.

于 2013-01-04T07:54:32.983 に答える
0

そのUIViewControllerのxibで、オブジェクトをファイルの所有者に接続していないと思います...

私の友人を一度チェックしてください..

動作しているかどうか教えてください!!!\

ハッピーコーディング!!!!

于 2013-01-04T06:21:37.603 に答える