好的,所以我正試圖在Xcode中爲自己設置一個非常簡單的程序。
我有一個窗口(在界面生成器),它包含一個NSTextView和一個NSButton。在我的AppController類中,我已聲明NSMutableString
作爲屬性。我想要做的是爲該字符串設置一個初始值,比如@「First Entry \ n」,然後將它綁定到NSTextView
。當我按下按鈕時,會調用-(IBAction)appendToString
的方法,該方法將@"Another Line\n"
附加到NSMutableString
。
我想通過綁定和鍵值觀察,而不是聲明IBOutlet
並手動更新內容,然後將這些更改反映到NSTextView
中。我還想要在textview中編輯NSMutable
字符串。如何將NSMutableString綁定到NSTextView的值?
不幸的是,我非常困惑,並沒有任何運氣搞清楚這一點。
如何進行此操作的基本步驟是什麼?
*****編輯*****
好吧,彼得Hosey間接地解決了這個問題。我忘記了我必須使用setLogString方法,而不是使用[logString appendFormat:]。因此,這裏是我結束了代碼:
在AppController.h:
#import <Cocoa/Cocoa.h>
@interface AppController : NSObject {
IBOutlet NSButton *appendButton;
NSString *logString;
IBOutlet NSTextView *thatView;
}
@property (readwrite, copy) NSString *logString;
-(IBAction)hitIt:(id)sender;
@end
AppController.m:
#import "AppController.h"
@implementation AppController
-(void)awakeFromNib
{
}
-(id)init
{
[super init];
logString = @"First Line\n";
return self;
}
-(IBAction)hitIt:(id)sender
{
[self setLogString:[logString stringByAppendingString:@"Hey, Another Line!\n"]];
}
@synthesize logString;
@end
然後,在InterfaceBuilder中,我綁定的NSTextView到AppController.logString,和HAD設置「連續更新值」標誌,以便對字符串進行對文本字段的更改。
非常感謝幫助傢伙!
你不需要在那裏使用'alloc'和'initWithFormat:'。當你有一個格式字符串可以傳遞時,你只應該使用'initWithFormat:'(和'stringByAppendingFormat:')。這些字符串都不包含任何格式化序列,因此您應該在第一種情況下分配裸字符串文本(它是NSString,因爲它是文字,所以不保留),並使用'stringByAppending' * String:在第二種情況下。 – 2010-09-06 01:13:11
哎呀,謝謝你抓到彼得。我正在使用的真正的程序確實使用了stringByAppendingFormat,並且我不小心把它帶到了我的測試程序中。現在修復。 :) – TraxusIV 2010-09-07 01:06:31