0

我无法从 NSTextField 子类调用外部方法。我有一个 NSTextField 子类,我正在监视文本,当 textDidChange 我正在调用一个属于 NSObject 类的外部方法时。出于某种原因,我的方法没有被调用。我希望有人能解释原因。我的代码如下。谢谢。

编辑:修复了drawag建议的代码。

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

对象控制器.h

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

}

- (void)methodFromOtherClass;
@end

对象控制器.m

#import "ObjectController.h"
@implementation ObjectController

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

3 回答 3

1

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

  1. 调用 textDidChange: 时 objectController 为 nil
  2. textDidChange: 实际上没有被调用,因为您没有正确连接它。

我认为除此之外没有人可以帮助您,因为您没有发布连接代码,也没有在哪里设置 objectController。

于 2013-06-24T22:34:17.343 回答
0

我通过创建 ObjectController 的实例而不是上述过程来解决此问题。

ObjectController *objectController = [ObjectController new];
[objectController methodFromOtherClass];
于 2013-06-25T04:43:18.727 回答
0

可能忘记将委托分配给 self 或实现 textDidChange 的任何对象?经常发生在我身上。

于 2013-06-24T22:28:06.247 回答