質問

I have a window with a large NSTextFeildCell, where text can be modified. Upon clicking a button another window appears where the text from the original window can be used some how. The issue I am having is when I attempt to retrieve that text the log spits out...

" -[NSTextView stringValue]: unrecognized selector sent to instance 0x100151860" Fallowed by a long trace...

I have tried to solve this several different ways but with no luck.

currently,

First window controller

.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

Next Window controller

.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

I have also tried str = [callingWindow getText] with the same result.

Any help would be very appreciated!

役に立ちましたか?

解決

It's not super intuitive to figure out from Apple's documentation, but to get the raw string value of a NSTextView (which inherits from NSText), just use:

[_txtTextView string];

And since you're using properties, it might be smarter to use the accessor in your function, like this:

- (NSString*)getText{
   return [self.txtTextView string];
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top