我正在研究 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没有被调用???