3

これが私がすることです:

1)新しいUIViewControllerサブクラスを作成し、インターフェイスビルダーのNIBでチェックします

2)ヘッダー内:

@interface QuizMainViewController : UIViewController 
{
    UILabel* aLabel;
} 

@property (nonatomic, retain) IBOutlet UILabel* aLabel;

@end

3).mで

#import "QuizMainViewController.h"    

@implementation QuizMainViewController

@synthesize aLabel;

- (void)dealloc 
{
    [aLabel release];
    [super dealloc];
}

@end

4)NIBを開きますInterface Builderで、新しいUILabelをビューにドラッグします。

ここでプログラムをテストすると、正常に実行されます。

5)ファイルの所有者を右クリックし、アウトレットからUILabelに「aLabel」を接続します。

ここで走るとクラッシュします。ログからのメッセージ:

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

4

2 に答える 2

1

私は問題を修正しました!

ビューはタブ バー コントローラーから読み込まれていました。ペン先の名前を「QuizMainViewController」に設定していましたが、ビューのクラス ID を「QuizMainViewController」に設定していませんでした。デフォルト値の「UIViewController」のままでした。 .

ビューがロードされたとき、それは UIViewController のインスタンスであると考えられたため、aLabel プロパティについて認識していませんでした。

教訓: タブ バー コントローラーを使用する場合は、独自のビュー コントローラーを持つ nib の nib 名とクラス ID を設定します。

于 2010-05-06T08:27:09.257 に答える
0

試す:

@interface QuizMainViewController : UIViewController 
{
    IBOutlet UILabel* aLabel;
} 

おそらく、Objective-C 2.0 ではこれを行う必要がなくなったと思われますが、私は iPhone でそれを省略して問題に遭遇しました。

編集:

変更してみることができます

@property (nonatomic, retain) IBOutlet UILabel* aLabel;

@property (nonatomic, retain) IBOutlet UILabel *aLabel;

ただし、それが問題になるとは思わないでください。コンパイラは通常、それを理解することができます。

Edit01:

IB では、View Controller のクラスがQuizManViewControllerだけでなく に設定されていることを確認してUIViewください。

于 2010-05-05T13:42:54.870 に答える