-1

テキストを変更できる大きな NSTextFeildCell を持つウィンドウがあります。ボタンをクリックすると、元のウィンドウのテキストを使用できる別のウィンドウが表示されます。私が抱えている問題は、ログが吐き出すテキストを取得しようとしたときです...

" -[NSTextView stringValue]: 認識されないセレクターがインスタンス 0x100151860 に送信されました" 長いトレースによって失敗しました...

私はこれをいくつかの異なる方法で解決しようとしましたが、うまくいきませんでした。

現在、

最初のウィンドウ コントローラー

.h

#import <Cocoa/Cocoa.h>
@class NextWindowController;
@interface TextViewWindowController : NSWindowController
@property (nonatomic, weak) NextWindowController *NextWindow;
@property (nonatomic, weak) IBOutlet NSTextFieldCell *txtTextView;

- (IBAction)btnClicked:(id)sender;
- (NSString*)getText;
@end

.m

#import "TextViewWindowController.h"
#import "NextWindowController.h"
@implementation TextViewWindowController
@synthesize NextWindow;
- (IBAction)btnClicked:(id)sender{
   [NextWindow setCallingWindow:self];
   [NextWindow showWindow:self];
}
- (NSString*)getText{
   return [_txtTextView stringValue];// there is a problem with the view...
}
@end

次のウィンドウ コントローラ

.h

#import <Cocoa/Cocoa.h>
@class TextViewWindowController;
@interface NextWindowController : NSWindowController{
   NSMutableString* str;
}
@property (nonatomic, weak) TextViewWindowController *callingWindow;
@end

.m

#import "NextWindowController.h"
#import "TextViewWindowController.h"
@implementation NextWindowController
@synthesize callingWindow;
- (IBAction)btnEnterClicked:(id)sender{
   [str setString:callingWindow.txtTextView.stringValue];
}

- (id)initWithWindow:(NSWindow *)window{
    self = [super initWithWindow:window];
    if (self) {
       str = [[NSMutableString alloc] init];
    }
    return self;
}
@end

str = [callingWindow getText] も試してみましたが、同じ結果が得られました。

どんな助けでも大歓迎です!

4

1 に答える 1

1

Apple のドキュメントから理解するのは非常に直感的ではありませんが、 NSTextView ( NSText から継承) の生の文字列値を取得するには、次を使用します。

[_txtTextView string];

また、プロパティを使用しているため、次のように関数でアクセサーを使用する方が賢明な場合があります。

- (NSString*)getText{
   return [self.txtTextView string];
}
于 2013-07-03T21:16:12.173 に答える