0

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

(view1 是 NSView 类的实例)

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 似乎没有收到值..

4

1 回答 1

0

这是部分解决方案。我曾经也有过一样的问题。

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

鉴于:

Nslog(@"%@",self);

在类控制器中:

NSLog(@"%@",view1);
于 2014-05-26T14:35:09.103 回答