Cocoa NSTextField

时间:2014-01-21 21:24:33

标签: cocoa nstextfield

我在从不同类的NSTExtField访问值时遇到问题,这里是代码:

AppDelegate.h

#import <Cocoa/Cocoa.h>

@interface AppDelegate : NSObject <NSApplicationDelegate>

@property (assign) IBOutlet NSWindow *window;   
@property (weak) IBOutlet NSTextField *numberOfPhrases; 

@end

AppDelegate.m

#import "AppDelegate.h"

@implementation AppDelegate
@synthesize numberOfPhrases;


- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    NSLog(@"%@",[numberOfPhrases stringValue]);
}

TestClass.h

@interface TestClass : NSObject

- (IBAction)doSomething:(id)sender;

@end

TestClass.m

@implementation TestClass

- (IBAction)doSomething:(id)sender {


    NSLog(@"%@",[numberOfPhrases stringValue]); ????????? 


}

2 个答案:

答案 0 :(得分:1)

如果没有指向它的链接,你显然无法访问另一个类中的文本字段值。

要访问文本字段的值,您需要在此类中再添加一个IBOutlet,或者将IBOutlet添加到AppDelegate,以便您可以访问其属性。

TestClass.h

@interface TestClass : NSObject
{
     IBOutlet NSTextField *numberOfPhrases;   // connect it to the new referencing outlet of text field by dragging a NSObject object in your xib and setting its class to "TestClass"
}

- (IBAction)doSomething:(id)sender;

@end

或另一个选择是在TestClass中有一个AppDelegate的IBOutlet(因为如果你只创建一个新的AppDelegate实例而不是它的IBOutlet,那么将创建一个不同的文本字段实例,你将无法访问你的文字字段的价值)

TestClass.h

@interface TestClass : NSObject
{
     IBOutlet AppDelegate *appDel;   // connect in the xib
}

- (IBAction)doSomething:(id)sender;

@end

TestClass.m

@implementation TestClass : NSObject

- (IBAction)doSomething:(id)sender
{
    [[appDel numberOfPhrases]stringValue]; //get the string value in text field
}

@end

答案 1 :(得分:0)

您唯一缺少的是添加到TestClass.m文件中:

#import "TestClass.h"
#import "AppDelegate.h"

@implementation TestClass

- (IBAction)doSomething:(id)sender {

    AppDelegate *theInstance = [[AppDelegate alloc] init];
    [theInstance numberOfPhrases];

}

@end

您需要在AppDelegate.h中添加TestClass.m的类标题,然后只需通过[[AppDelegate alloc] init];调用实例您需要将NSTextField与<{1}}相关联Interface Builder do:Something -> TestClass引用商店 numberOfPhrases -> AppDelegate中的strong>已发送操作。

<强>输出

2014-01-21 23:32:56.499 test[6236:303] Wonders Never Cease