У меня проблема с 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
Может показаться, но суть в том, что я вызываю метод
- (void)setSelectedEmployee:(Employee*)employeeIn
в моем appDelegate и присвойте ему "Employee", который выбран, таким образом, у экземпляра есть сотрудник для работы. Я точно знаю, что получает данного сотрудника, потому что NSLog всегда печатает его правильно.
NSTextField , называемый "mikk", правильно связан в IB, потому что он устанавливает для текста меток значение "привет" в методе awakeFromNib . Итак, главная проблема: почему я не могу установить текст метки в другом месте?
Я знаю, что это выглядит странно / глупо, но, пожалуйста, дайте мне знать, если вам нужна дополнительная информация (а также что, если вы можете быть более конкретным) и предложения, чтобы сделать этот текст более читабельным.
Редактировать : просмотрел код и оставил только «i-think-важные-биты». Также сохранил IBOutlet без какого-либо влияния на цель.