【发布时间】:2010-12-14 03:05:43
【问题描述】:
我在 NSObject 类 (Timer) 中使用 NSTimer,它触发一个方法,增加一个变量并触发 View Controller (InfoViewController) 中的一个方法。 (困惑;-D)
一切都显示在屏幕上,并且计时器已正确启动。变量 f.hunger 更新并显示正确的值(使用 printf("%f", f.hunger) 时),但 UIProgress 栏不会自行更新。 f.hunger 的起始值为 1。
如果有人可以帮助我,请指出我在哪里犯了明显的错误或得到建议,我将不胜感激,因为它已经让我思考了好几个小时了。我在下面添加了一些示例代码,以更清楚地显示我在做什么。
祝大家好运。 :-D
定时器类
- (void)startHungerTimer
{
if(hungerTimer.isValid == NO)
{
infoVC = [[InfoViewController alloc] init];
self.hungerTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(incrementHungerTimer:) userInfo:nil repeats:YES];
}
}
- (void)incrementHungerTimer:(NSTimer *)aTimer
{
f.hunger -= 0.01;
[infoVC updateHungerProgress];
}
信息视图控制器
- (void)updateHungerProgress
{
Functions *f = [Functions sharedFunctions];
hungerBar.progress = f.hunger;
}
- (void)loadView
{
hungerBar = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];
[hungerBar setFrame:CGRectMake(17.0, 30.0, 160.0, 10.0)];
hungerBar.progress = f.hunger;
[bView addSubview:hungerBar];
[hungerBar release];
}
【问题讨论】:
-
您是否确认饥饿栏.progress 已通过 IB 正确初始化/连接(如果您使用了 IB)?
-
是的,我已经在 -(void)loadView{} 中初始化了上面的饥饿条。抱歉应该提到这一点。 :-)
-
是否通过任意文字设置饥饿栏.进度更新栏,例如饥饿条.progress = 0.50f;
-
Umm 刚刚尝试在 updateProgressBar 方法被调用时将饥饿栏.progress 设置为 0.50f,但它没有这样做。就像由于某种原因在该方法中它不允许我更新 UIProgressView。 :(
标签: objective-c cocoa cocoa-touch ios uiprogressview