如何将值从控制器类传递到NSView类?

时间:2013-05-04 18:39:14

标签: objective-c xcode cocoa nsview

我的问题是关于绘制笛卡尔图,我必须创建一些在我的类“控制器”中计算的值。 我在我的类控制器的文件.m中写了这个:

(view1是NSView类的istance)

for (time=1;time<=duration;time++){
    ....
    ...
    [view1 setValues:True];
    ...
}

并在我的NSView类的.m文件中:

-(void)setValues:(float)val{
    int i=1;
    list[i]=val;
    //NSLog(@" %f",list[i]);
    i++;
}

现在,我如何将这些值(我使用从控制器类传递的值创建的数组)传递给“drawRect”?


编辑:

@interface viewShapes1 : NSView {
    float list[480];
}

-(void)setValues:(float)val;
-(float*)getList;

@end

#import "viewShapes1.h"

@implementation viewShapes1

- (id)initWithFrame:(NSRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code here.
    }

    return self;
}

-(void)setValues:(float)val {
    int i=1;
    list[i]=val;
    i++;
}

-(float*)getList {
    return list;
}

- (void)drawRect:(NSRect)dirtyRect {
    float*ptr=[self getList];

    for(int i=1;i<=480;i++){
        //element of array:
        NSLog(@"%f",ptr[i]);
    }

   [...]
}

#import "controller.h"

[...]


-(IBAction)start:(id)sender
{

    [...]

    for(time=1;time<=duration;time=time+1)
    {
       [...]

       [view1 setValues:myValue];

       [...]
    }
}

问题是drawRect似乎没有收到值..

1 个答案:

答案 0 :(得分:0)

这是部分解决方案。我遇到了同样的问题。

你应该检查对象ID(我假设)。您肯定会将消息发送到错误的对象 - 这至少是我的问题。尝试获取两个对象的ID - 如果它们相同,则完美。

在视图中:

Nslog(@"%@",self);

在类控制器中:

NSLog(@"%@",view1);