Я создаю приложение, в котором я использую NSTimer
для создания цикла. Когда приложение запускается, в viewDidAppear
я проверяю, установлено ли определенное значение в NSUserDefaults
, а если нет, я показываю пользователю UIAlertView
с UITextView
. Пока здесь все ок. Как только пользователь устанавливает значение по умолчанию, в представлении оповещения alertView:clickedButtonAtIndex:
вызывает void
, который заставляет работать таймер:
- (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
в журнале (я знаю, что это происходит, когда вы не вызываете суперпредставление)