Question

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!

Was it helpful?

Solution

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];
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top