从NSTextField子类调用NSObject方法?

时间:2013-06-24 22:09:47

标签: objective-c macos cocoa nstextfield nsobject

我在从NSTextField子类调用外部方法时遇到问题。我有一个NSTextField子类,我正在监视文本,当textDidChange我正在调用一个NSObject类的外部方法。由于某种原因,我的方法不会被调用。我希望有人可以解释原因。我的代码如下。感谢。

编辑:修正了drewag建议的代码。

MyTextField.h

#import <Cocoa/Cocoa.h>
@class ObjectController;

@interface MyTextField : NSTextField <NSTextFieldDelegate> {
    ObjectController *objectController;
}
@property (strong, nonatomic) ObjectController *objectController;

@end

MyTextField.m

#import "MyTextField.h"
#import "ObjectController.h"

@implementation MyTextField
@synthesize objectController;

- (void)textDidChange:(NSNotification *)notification{
[objectController methodFromOtherClass];
}

@end

ObjectController.h

#import <Foundation/Foundation.h>
@interface ObjectController : NSObject {

}

- (void)methodFromOtherClass;
@end

ObjectController.m

#import "ObjectController.h"
@implementation ObjectController

- (void) methodFromOtherClass {
NSLog(@"Testing");
}

3 个答案:

答案 0 :(得分:1)

导致此问题的可能情况有两种:

  1. 当调用textDidChange:时,objectController为nil
  2. textDidChange:实际上没有被调用,因为你没有正确连接它。
  3. 我认为没有人可以帮助你,因为你没有发布连接代码,也没有设置objectController。

答案 1 :(得分:0)

可能忘了将委托分配给self或者实现textDidChange的任何对象?发生在我身上很多。

答案 2 :(得分:0)

我通过创建ObjectController的实例而不是上面的过程修复了这个问题。

ObjectController *objectController = [ObjectController new];
[objectController methodFromOtherClass];