我一直在尝试调整加速度计示例中的代码,以便当用户按下一个uibutton时,一个点被添加到折线图中。
处理将两个浮点数转换为CGPoint,并将CGPoint转换为NSValue,然后将其添加到NSMutableArray,其中包含以下
-(IBAction)calculate:(id)sender {
self.points = [NSMutableArray array];
CGPoint pt = CGPointMake(d, c);
[self.points addObject:[NSValue valueWithCGPoint:pt]];
NSLog(@"%@", NSStringFromCGPoint(pt));
NSLog(@"%@", [NSString stringWithFormat:@"%d points", self.points.count ]);
}
但由于某些原因我只得到一个对象存储在数组中,似乎每次按下计算按钮,对象pt被覆盖,在正面它有正确的x,y坐标。关于这个的任何想法?
更新
删除了self.points = [NSMutableArray array];并将其置于视图中加载,也将第一个点设置为0,0。这样工作正常。现在接下来的问题是我有一个Graph子类,其中正在进行CG绘图。我试图找出一种简单的方法来访问图形类中ViewController类中的上述NSMutableArray。
我已经接近尾声,但我真的陷入困境,任何帮助都会很棒。 仍在尝试在UIScrollview上的UIView上绘制线图。绘制rect方法在UIView子类中,一切都在那里工作,我在轴上有网格线和标签,我可以手动绘制到它上面。但我遇到的问题是我无法读取CGPoints的NSMutableArray,它们是x和y coords。 ViewController执行计算,结果写入NSMutable数组,这一切都正常,我可以看到CGpoints及其值是用ViewController中的NSLogs编写的。 我已经尝试了各种方法将NSMutableArray设置为全局,但无济于事,一切都在运行,但是当我可以看到在ViewController中写入的点时,它们对UIView子类是不可见的。 我还尝试使用addObserver和observeValueForKeyPath方法,并且在所有运行的子类中再次看不到数组。 任何想法,建议,提示或想法都会很棒
答案 0 :(得分:0)
听起来你的所有trackcalc []值都是零。反过来,这表明[vallres.text floatValue]返回0。
[NSString floatValue]在无法返回数字时返回零。
floatValue
返回接收者的浮点值 文本作为浮动。
- (float)floatValue
返回值
接收器的浮点值 文本作为浮点数,跳过空格 在字符串的开头。 返回HUGE_VAL或-HUGE_VAL 溢流,下溢0.0。也 如果接收者没有,则返回0.0 以有效的文本表示开头 一个浮点数。
答案 1 :(得分:0)
一路上工作并学到了很多东西,只是出于对最终产品概要的兴趣
这是来自UIview子类
的相关男女同校- (void)drawRect:(CGRect)rect {
float what = self->m_Val1;
NSLog(@"what %f",what);
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGColorRef black = [[UIColor blackColor] CGColor];
// Draw the grid lines
DrawGridlines(ctx, 0.0, 200);
// Draw the text
UIFont *systemFont = [UIFont systemFontOfSize:12.0];
[[UIColor whiteColor] set];
[@"20" drawInRect:CGRectMake(2.0, 1.0, 24.0, 16.0) withFont:systemFont lineBreakMode:UILineBreakModeWordWrap alignment:UITextAlignmentLeft];
[@"15" drawInRect:CGRectMake(2.0, 50.0, 24.0, 16.0) withFont:systemFont lineBreakMode:UILineBreakModeWordWrap alignment:UITextAlignmentLeft];
[@"10" drawInRect:CGRectMake(2.0, 100.0, 24.0, 16.0) withFont:systemFont lineBreakMode:UILineBreakModeWordWrap alignment:UITextAlignmentLeft];
[@"5" drawInRect:CGRectMake(2.0, 150.0, 24.0, 16.0) withFont:systemFont lineBreakMode:UILineBreakModeWordWrap alignment:UITextAlignmentLeft];
if (what < 1) return;
CGContextSetStrokeColorWithColor(ctx, black);
CGContextSetLineWidth(ctx, 4.0f);
MySingleton *resultsInstance = [MySingleton instance];
NSLog(@"From Graph view Count: %d", [[resultsInstance getArray] count]);
float counthis =([[resultsInstance getArray] count]);
for (int i = 0; i < (counthis-1); i++)
{
CGPoint pt1 = [[[resultsInstance getArray] objectAtIndex:i]CGPointValue];
CGPoint pt2 = [[[resultsInstance getArray] objectAtIndex:i+1]CGPointValue];
CGContextMoveToPoint(ctx, pt1.x, pt1.y);
CGContextAddLineToPoint(ctx, pt2.x, pt2.y);
CGContextStrokePath(ctx);
NSLog(@"cgpoint %@", NSStringFromCGPoint(pt1));
NSLog(@"point x,y: %f,%f", pt1.x, pt1.y);
}
}