iPhone SDK - (ボイド)のviewDidLoad {} - 進行状況を表示
-
20-09-2019 - |
質問
私は、ページをロードするためにインターネットを使用して、長い- (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
}
}
正しい解決策はありません
他のヒント
代わりのviewDidLoadでブロックする、読み込みを行う新しいスレッドを起動してみてください。次に、あなただけのものは、それが利用可能になると必要なものは何でもコンテンツの読み込みと更新されていると言うテキストを持つビューを初期化ます。
あなたは多分何かがロードされると言ってテキストを追加することができます。 それともあなたはまた、プログレスバーの代わりに、ちょうど進行状況インジケータを提供するために、NSURLConnectionのデリゲートメソッドで遊ぶことができます。
所属していません StackOverflow