我的问题是关于绘制笛卡尔图,我必须创建一些在我的类“控制器”中计算的值。 我在我的类控制器的文件.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似乎没有收到值..
答案 0 :(得分:0)
这是部分解决方案。我遇到了同样的问题。
你应该检查对象ID(我假设)。您肯定会将消息发送到错误的对象 - 这至少是我的问题。尝试获取两个对象的ID - 如果它们相同,则完美。
在视图中:
Nslog(@"%@",self);
在类控制器中:
NSLog(@"%@",view1);