iPhone SDK - (void)viewDidLoad { } - Показать прогресс
Я долго - (void)viewDidLoad { }
функция, которая использует интернет для загрузки страницы, и всякий раз, когда приложение загружает URL, экран становится черным. у меня есть UIActivityIndicator
настроить, чтобы показать, что адрес загружается, но я не знаю, как предотвратить его появление, как будто приложение не отвечает, и я не хочу показывать индикатор сетевой активности [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
потому что экран все еще будет черным, просто с загрузчиком в верхнем углу. Мой код ниже:
- (void)viewDidLoad {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
email.text = [defaults objectForKey:@"mom_email"];
pass.text = [defaults objectForKey:@"mom_pass"];
if (email.text != nil && pass.text != nil) {
[self login:loginBtn];
}
}
- (IBAction)login:(id)sender {
[email resignFirstResponder];
[pass resignFirstResponder];
[loader startAnimating]; // Does nothing though
NSString *em = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef)email.text,NULL,(CFStringRef)@"!*'();:@&=+$,/?%#[]",kCFStringEncodingUTF8);
NSString *ps = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef)pass.text,NULL,(CFStringRef)@"!*'();:@&=+$,/?%#[]",kCFStringEncodingUTF8);
NSURL *url = [[NSURL alloc] initWithScheme:@"http" host:@"localhost" path:[[NSString alloc] initWithFormat:@"/app/login.php?email=%@&pass=%@", em, ps]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *loginResult = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
[loader stopAnimating];
NSRange range = [loginResult rangeOfString:@"1"];
if (range.location != NSNotFound) {
[self dismissModalViewControllerAnimated:YES]; // Doesn't do anything if function called from viewDidLoad
}
}
2 ответа
Вместо блокировки в viewDidLoad, попробуйте запустить новый поток, который выполняет загрузку. Затем вы просто запускаете представление с текстом, который говорит, что вещи загружаются, и обновляете любой необходимый контент, как только он становится доступным.
Вы можете добавить текст о том, что что-то загружается. Или вы также можете поиграть с методами делегата NSURLConnection, чтобы обеспечить индикатор выполнения вместо просто индикатора выполнения.