繁体   English   中英

无法更改NSTextField文本

[英]can't change NSTextField text

我对NSTextField有问题-我无法更改其中的文本 (可以在(void)awakeFromNib中更改一次,但此后不能更改)。

我将在这里给我标题和实现:

#import <Cocoa/Cocoa.h>
#import "Employee.h"


@interface EmployeeView : NSViewController {  
    NSTextField *mikk;  
    Employee *employee;  
}

@property (retain) IBOutlet NSTextField *mikk;  
@property (retain) Employee *employee;

- (void)setSelectedEmployee:(Employee*)employeeIn;

@end


#import "EmployeeView.h"


@implementation EmployeeView

@synthesize mikk, employee;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil  
{  
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];  
    if (self) {  
        // Initialization code here.  
    }  

return self;  
}  

- (void)setSelectedEmployee:(Employee*)employeeIn  
{  
    employee = employeeIn;  
    NSLog(@"given employee = %@", employee.fullName);
    [mikk setStringValue: @"hi"];  
}  

-(void)awakeFromNib  
{  
    NSLog(@"i awoke");  
    [mikk setStringValue:@"hello"];
}  

- (void)dealloc  
{  
    [employee release];  
    [mikk release];  
    [super dealloc];  
}  

@end  

它可能看起来像fd,但主要要点是我调用了方法

- (void)setSelectedEmployee:(Employee*)employeeIn

在我的appDelegate中,并为其提供所选的“雇员”,因此该实例具有可与之合作的雇员。 我肯定知道,它可以获取给定的雇员,因为NSLog总是正确地打印出来。
名为“ mikk”的NSTextField在IB中已正确链接,因为它在awakeFromNib方法中将标签文本设置为“ hello”。 所以主要的问题是: 为什么我不能在其他地方设置标签文本?

我知道这看起来很奇怪/愚蠢,但是,如果您想了解更多信息(如果可以的话,还可以提供什么信息)以及使该文本更具可读性的建议,请告诉我。

编辑 :查看代码,仅保留“ i-think-important-bits”。还保留了IBOutlet,对目标没有任何影响。

尝试改变

@property (assign) IBOutlet NSTextField *mikk; 

@property (retain) IBOutlet NSTextField *mikk; 

您正在使用垃圾收集吗? 以下是笔尖加载文档中有关垃圾回收下的对象保留的内容:

图中的大多数对象通过对象之间的强引用而保留在内存中。 最初,只有nib文件中的顶级对象没有强引用。 因此,您的代码必须创建对这些对象的强引用,以防止对象图被释放。

因此,如果您对包含文本视图(可能是视图或窗口)的顶级对象没有很好的引用,则可能正在收集整个对象图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM