簡體   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