我想從我的項目的主類中分離UITextViewDelegate方法,我創建了一個類來管理委託方法,但我無法從主類更改IBOulets的值。UITextFieldDelegate不工作
我做了一個ViewController和TextFieldController的測試項目,在Storyboard中我添加了一個文本框和一個標籤。當我開始在文本字段中寫入時,我想要做的是更改標籤的文本。下面是代碼:
ViewController.h:
#import <UIKit/UIKit.h>
#import "TextFieldController.h"
@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet UITextField *textField;
@property (strong, nonatomic) IBOutlet UILabel *charactersLabel;
@end
ViewController.m:
#import "ViewController.h"
@interface ViewController()
@property (nonatomic, strong) TextFieldController *textFieldController;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
_textFieldController = [[TextFieldController alloc] init];
_textField.delegate = _textFieldController;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
@end
TextFieldController.h:
#import <UIKit/UIKit.h>
#import "ViewController.h"
@interface TextFieldController : UIViewController <UITextFieldDelegate>
@end
文本字段Controller.m或者:
#import "TextFieldController.h"
@interface TextFieldController()
@property ViewController *viewController;
@end
@implementation TextFieldController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (BOOL) textFieldShouldBeginEditing:(UITextField *)textField {
NSLog(@"hello");
_viewController.charactersLabel.text = @"hello";
return YES;
}
@end
當我開始在文本字段中寫入消息「Hello」時,會在日誌中打印,但標籤的文本不會更改。我想知道如何更改其他類的標籤文本值。
謝謝,它的工作!你推薦我這樣做?我需要將代表和視圖控制器保存在不同的文件中。 – rene
爲什麼你需要它在不同的文件? –
所以我可以在不同的類中使用委託/數據源。 – rene