2011-09-14 65 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