I’m making an app where I use an NSTimer to make a loop. When the app starts, in viewDidAppear I check if a certain value in NSUserDefaults is set, and if it’s not I show the user an UIAlertView with an UITextView. Until here all ok. Once the user sets the user defaults value, the alert view’s alertView:clickedButtonAtIndex: calls a void that makes the timer work:
- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
[standardUserDefaults setObject:nameField.text forKey:@"host"];
[standardUserDefaults synchronize];
[self setUp];
NSLog(@"called");
}
This is [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
}
This is [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]];
}
The problem is that the tableView cells doesn’t get the values and remains white, but if you close the app and load it again (when it has the variable in the user defaults) the thing works perfectly so I don’t know what could happen. I also get so often wait_fences: failed to receive reply: 10004003in the log (I know this happens when you don’t call the superview)
duh, I found the problem. I was using the variable
valwhich was set on app start, and it was empty when the user defaults didn’t had that key :/ so I just did:NSString *userhost = [standardUserDefaults objectForKey:@"host"];when calling thesetUpvoid after dismissing the alert view