【发布时间】:2011-06-16 14:01:35
【问题描述】:
我遇到了 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
可能看起来很f-d,但重点是我调用了方法
- (void)setSelectedEmployee:(Employee*)employeeIn
在我的 appDelegate 中并给它选择的“员工”,因此该实例有一个员工可以使用。我确定它会获取给定的员工,因为 NSLog 总是能正确打印出来。
名为“mikk”的 NSTextField 在 IB 中正确链接,因为它在 awakeFromNib 方法中将标签文本设置为“hello”。所以主要问题是:为什么我不能在别处设置标签文本?
我知道这看起来很奇怪/愚蠢,但如果您想了解更多信息(还有什么,如果您可以更具体的话)和建议以使该文本更具可读性,请告诉我。
编辑:查看代码,只留下“i-think-important-bits”。还保留了 IBOutlet,对目标没有任何影响。
【问题讨论】:
-
你也设置了
view插座吗? -
@Caleb,很抱歉把不必要的东西放在那里,我昨天太累了。 @Bavarious,我已经将 IB 中的视图与
NSViewController连接起来(这是使用EmployeeView的自定义类)。我也应该在代码中为它创建一个Outlet吗? -
NSViewController已经声明了一个view出口,你说你已经连接了。 (作为记录,cmets 中的@仅通知第一个用户;在您的评论中,它通知了 Caleb 但没有通知我。)
标签: objective-c cocoa nstextfield