2013-07-03 6 views
-1

У меня есть окно с большим NSTextFeildCell, где текст может быть изменен. После нажатия кнопки появляется другое окно, где текст из исходного окна может быть использован каким-то образом. Проблема, которую я имею, когда я пытаюсь получить этот текст журнала выплевывает ...Получение строкового значения из отдельного окна для использования на другом. Objective C

«- [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 

контроллер Next Window

.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 

Я также попытался ул = [callingWindow GetText] с тем же результатом.

Любая помощь будет очень признательна!

ответ

1

Это не супер интуитивно понять из документации Apple, но, чтобы получить необработанный строковое значение NSTextView (which inherits from NSText), просто используйте:

[_txtTextView string]; 

И так как вы используете свойства, это может быть разумнее использовать аксессор в вашей функции, например:

- (NSString*)getText{ 
    return [self.txtTextView string]; 
} 
+0

я бы не использовать метод под названием 'getText', такого рода следует, что значения возвращаются по ссылке в параметрах метода. – Abizern

+0

Фантастическая точка. Надеюсь, Даниэль может изменить имя из «getText» или ... даже лучше ... просто получить доступ к свойству из * другого * контроллера вида (например, '' [callWindow.txtTextView string]; ')) –

+0

Согласовано. Виртуальный +1 до тех пор, пока часы не гаснут :) – Abizern