Я загружаю фид JSON асинхронно в своем классе делегата приложения.Теперь загрузка данных занимает некоторое время, поэтому мое табличное представление сначала отображается пустым, а затем заполняется через несколько секунд.Поэтому я бы хотел:
1 - выяснить, что вызывает эту задержку.Поэтому сохраняйте все действия в приложении: метод didFinishLaunchingWithOptions и загружайте VC только после того, как все будет загружено.
ИЛИ
2 - Отображайте индикатор активности, пока таблица не заполнит данные.1007 *
Теперь в первом сценарии я почти уверен, что нажимаю контроллер представления в неправильное время.Я попытался поиграться с этим, но, похоже, это единственный способ, с помощью которого мое приложение будет собираться и запускаться.
Во втором сценарии я хотел бы знать, какой метод «подключения» вызывается первым, а какойпрошлой.Поэтому я смогу запустить представление индикатора активности в первом методе и выпустить в конце последнего метода.
Ниже приведен мой код.Любые предложения / помощь с благодарностью.Спасибо за чтение.
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
[responseData setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[responseData appendData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Error"
message:@"Please check your network connection and relaunch the application"
delegate:self
cancelButtonTitle:@"Dismiss"
otherButtonTitles:nil, nil];
[alert show];
[alert release];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
if ([responseString isEqualToString:@"Unable to find specified resource."]) {
NSLog(@"Unable to find specified resource.n");
}
else {
ListingsViewController *listingsViewController = [[ListingsViewController alloc] initWithNibName:@"ListingsViewController" bundle:nil];
listingsViewController.jsonData = responseString;
[self.navigationController pushViewController:listingsViewController animated:NO];
[self.navigationController setViewControllers:[NSArray arrayWithObject:listingsViewController] animated:NO];
[listingsViewController release];
}
[connection release];
[responseData release];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Start the HTTP request
responseData = [[NSMutableData data] retain];
NSURLRequest *request = [NSURLRequest requestWithURL:
[NSURL URLWithString:@"http://www.shoofeetv.com/iphonexml/view/all_channels.json"]];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
// Display the navigation controller
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];
return YES;
}