0

本旨:

モデル: からの値を、textfield呼び出し/ログ記録できる変数に設定します。

表示:クラスNSTextFieldに接続されているだけです。Model

コントローラ:NSButtonに接続されていViewControllerます。

お気づきのとおり、NSLog からの基本的な文字列と、事前定義されたbegin値がログに記録されます。しかし、txtBegin値を要求すると返されますNULL

とが接続インスペクタに接続されているTextFieldことは知っています。Button

スクリーンショット:

ここに画像の説明を入力

ダウンロード可能なプロジェクト:

ViewController.h

#import <Cocoa/Cocoa.h>
#import "Model.h"
@interface ViewController : NSView
- (IBAction)logTheVariable:(id)sender;

@end

ViewController.m

    - (IBAction)logTheVariable:(id)sender 
{
        Model *myModel = [[Model alloc]init];
        [myModel doSomething];
}

Model.h

#import <Foundation/Foundation.h>

@interface Model : NSObject{
//iVars
    int begin;
}
//properties
@property (weak) IBOutlet NSTextField *txtBegin;

//methods
-(void)doSomething;

@end

モデル.m

#import "Model.h"

@implementation Model

    -(void)doSomething{
        NSLog(@"I'm in the Model Class"); //logs like a charm!
        begin = 5; //just a test to see if it logs anything (which works)
        NSLog(@"%d",begin);// logs like a charm!
        //->Problem is here <-
        NSLog(@"%@",_txtBegin.stringValue); //returns a "NULL" value.
        //->Problem is here <-
    }
    @end
4

2 に答える 2

1

簡単な解決策は、ビューコントローラーでテキストフィールドのアウトレットを宣言し、モデルクラスで以下のメソッドを変更して実装するだけです:-

Model.h

 -(void)doSomething: (NSString*)yourstringvalue;

モデル.m

 -(void)doSomething: (NSString*)yourstringvalue
 {
    NSLog(@"%@",yourstringvalue);
 }

Viecontroller.m

- (IBAction)logTheVariable:(id)sender 
  {
     Model *myModel = [[Model alloc]init];
     NSString * str=self.begintext.stringValue;
    [myModel doSomething:str];
  }
于 2013-10-24T19:15:42.037 に答える