如何将int传递给使用drawRect使我成为圆弧的UIView?
我正在尝试绘制一个圆弧,并且每秒都在UIView上调用setNeedsDisplay,其中int提前一(秒)。当我调用NSLog(@"draw, %d",self.secs);
基本上我的代码日志只是每秒读取“draw 1”后跟“draw 0”。
draw.h
@property (nonatomic) int secs;
draw.m
@synthesize secs;
- (void)drawRect:(CGRect)rect
{
NSLog(@"draw, %d",self.secs);
//stuff with using this value
}
@end
主VC.m - NSTimer调用它,但tick.secs每次似乎都为0
draw *tick = [[draw alloc] init];
tick.secs = tick.secs+1;
NSLog(@"draw, %d",tick.secs);
[self.drawView setNeedsDisplay];
编辑1:
Stonz2非常正确,我应该使用一个实例draw
- 这解决了我的一半问题。现在在我的主要VC.m中,tick.secs
每秒都在增加,但在draw.m中,drawRect仍然认为secs
每秒为0
编辑2: Sha使用UIView观察我的IBOutlet,而不是绘制
来修复它答案 0 :(得分:2)
问题在于,每次运行定时方法时都会创建一个新的draw
对象。如果要保留其属性,则需要对draw
对象保持相同的引用。
考虑在主VC.m文件中创建实例draw
对象,而不是每次运行定时方法时都创建一个新对象。
示例:
@implementation mainVC
{
draw *tick;
}
...
- (void)startTimer
{
tick = [[draw alloc] init];
tick.secs = 0;
// start your timer here
}
- (void)timerIncrement
{
// do NOT alloc/init your draw object again here.
tick.secs += 1;
[self.drawView setNeedsDisplay];
}