私は IOS HelloWorld の例に取り組んでいますが、TextField のデリゲートの設定に関して質問があります。この例では、TextField から ViewController にコントロールをドラッグするのと同じくらい簡単でした。しかし、次のようにデリゲートとして機能するカスタム クラスを作成したいとします。
#import <Foundation/Foundation.h>
@interface SweetAssDelegate : NSObject <UITextFieldDelegate>
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField;
@end
#import "SweetAssDelegate.h"
@implementation SweetAssDelegate
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField
{
NSLog(@"Calling Delegate");
[theTextField resignFirstResponder];
return YES;
}
@end
このクラスを TextField のデリゲートに設定するにはどうすればよいですか? 私が知る限り、GUI でこれを行う方法はありません。ウィンドウの読み込み後に委任を手動で設定しようとしましたが、成功しませんでした:
#import "ViewController.h"
#import "SweetAssDelegate.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextField *inputField;
@end
- (void)viewDidLoad
{
[super viewDidLoad];
SweetAssDelegate *foo = [[SweetAssDelegate alloc] init];
[self.inputField setDelegate:foo];
NSLog(@"Delegate: %@", self.inputField.delegate);
}
キーボードを起動すると、実際に何らかのメモリ例外が発生しますか? 何か案は?ありがとう。
副次的な質問として、常に viewDidLoad を使用して変数を初期化する必要があるのはどこですか? init が呼び出されていないことに気付きましたか???