iOSでアプリを作成することについて疑問に思っていました。
私はこれを見つけました:
開始に関する Apple の小さなチュートリアル。
最後にチュートリアル全体を実行した後、プロジェクトをコンパイルしようとしましたが、プロジェクトが表示されようとしているときに、次のエラーが表示されました。
2012-09-03 10:05:46.201 HelloWorld[29361:f803] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<HelloWorldViewController 0x6837c10> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key label.'
*** First throw call stack:
(0x13c7022 0x1558cd6 0x13c6ee1 0x9bf022 0x930f6b 0x930edb 0x94bd50 0x23371a 0x13c8dea 0x13327f1 0x23226e 0xd81fc 0xd8779 0xd899b 0x37401 0x37670 0x37836 0x3e72a 0xf596 0x10274 0x1f183 0x1fc38 0x13634 0x12b1ef5 0x139b195 0x12ffff2 0x12fe8da 0x12fdd84 0x12fdc9b 0xfc65 0x11626 0x1c3d 0x1ba5)
terminate called throwing an exception
私が間違った接続があると思いますが、何ですか?
最後の.mと.hをコピーして貼り付けても、コンパイルされません。
プロパティ「変数」にはメソッド「setLabel」を定義する必要があります - @synthetize を使用してください
variable と setLabel は 6 回変更されます (異なる警告)。
私は何を間違っていますか?
-------編集これは私のviewcontroller.hです
#import "HelloWorldViewController.h"
@interface HelloWorldViewController ()
@property (weak, nonatomic) IBOutlet UITextField *textField;
@property (weak, nonatomic) IBOutlet UILabel
*label;
- (IBAction)changeGreeting:(id)sender;
@end
@implementation HelloWorldViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)viewDidUnload
{
[self setTextField:nil];
[self setLabel:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
- (IBAction)changeGreeting:(id)sender {
self.userName = self.textField.text;
NSString *nameString = self.userName;
if ([nameString length] == 0) {
nameString = @"World";
}
NSString *greeting = [[NSString alloc] initWithFormat:@"Hello, %@!", nameString];
self.label.text = greeting;
}
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
if (theTextField == self.textField) {
[theTextField resignFirstResponder];
}
return YES;
}
@end