2011-09-14 63 views
0

我正在做一个应用程序,我使用NSTimer来做一个循环。当应用程序启动时,在viewDidAppear我检查是否设置了NSUserDefaults中的某个值,如果不是,则显示用户UIAlertViewUITextView。直到这里都好。一旦用户设置用户默认值,警报视图的alertView:clickedButtonAtIndex:调用void,使定时器工作:NSTimer奇怪的错误(我相信)

- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    [standardUserDefaults setObject:nameField.text forKey:@"host"]; 
    [standardUserDefaults synchronize]; 
    [self setUp]; 
    NSLog(@"called"); 
} 

这是[self setUp];

-(void)setUp { 


    timer = [NSTimer timerWithTimeInterval: 1 target: self selector: @selector(reloadData) userInfo: nil repeats: YES]; 

    [[NSRunLoop mainRunLoop] addTimer: timer forMode: NSDefaultRunLoopMode]; 
    [self reloadData]; 
    self.host = [self getHostName:val]; 
    self.ip = [self getHostIP:val]; 
    NSLog(@"reached here"); //THIS GETS CALLED SO I THINK IT WORKS 


} 

这是[self reloadData]

- (void)reloadData { 
    NSArray *words = nil; 
    words = [[self getUptime] componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
    //int sum = [[words objectAtIndex:0] intValue]/100.0; 
    float sum1 = ([[words objectAtIndex:0] floatValue]/10.0); 
    NSLog(@"%f", sum1); 
    [bar1 setProgress:sum1]; 
    load1.text = [NSString stringWithFormat:@"%f", [bar1 progress]]; 

    float sum2 = ([[words objectAtIndex:1] floatValue]/10.0); 
    NSLog(@"%f", sum2); 
    [bar2 setProgress:sum2]; 
    load2.text = [NSString stringWithFormat:@"%f", [bar2 progress]]; 


    float sum3 = ([[words objectAtIndex:2] floatValue]/10.0); 
    NSLog(@"%f", sum3); 
    [bar3 setProgress:sum3]; 
    load3.text = [NSString stringWithFormat:@"%f", [bar3 progress]]; 

} 

的问题是的tableView细胞没有得到的价值观和保持白色,但如果你关闭应用程序,然后重新装入(当它具有变量在用户默认情况下)的东西完美的作品,所以我不知道会发生什么。我也经常在日志中得到wait_fences: failed to receive reply: 10004003(我知道这种情况发生在你不叫超级视图时)

+0

也是后setUp void当NSTimer:scheduledTimerWith ...消息自动计划一个计时器,保存一行代码,并且保存的每一行代码都是......呃,抵消你的碳足迹......呃......无论如何。 – AndrewS

回答

0

嗯,我发现了这个问题。我用的是这是在应用程序启动设置变量val,它是空的,当用户默认没有那个key:/所以我只是做:NSString *userhost = [standardUserDefaults objectForKey:@"host"];呼吁解雇警报视图

0

你是否调用[table reloadData]?很奇怪,您将自己的内部函数命名为tableview的消息。

+0

当我希望表视图重新载入我调用'[self.tableView reloadData]'的数据,而我的函数是'[self reloadData]'。我可以改变他们,如果这可能是一个问题 – pmerino

+0

不,不是一个问题,只是不寻常的。 – AndrewS