我有一个使用互联网来加载页面的长- (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的委托方法起到提供一个进度条,而不是只是一个进度指示器。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top