Отобразить UIActivityIndicator в viewDidLoad
Я работаю над приложением, которое извлекает данные с веб-сервера через JSON в UITableViewController
,
Загрузка данных занимает время, поэтому я хочу отобразить счетчик во время загрузки в viewDidLoad
,
Это мое первое заявление, поэтому мне понадобится немного больше информации о том, как это сделать.
viewDidLoad
метод
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *categoryId = catId;
NSString *post =[NSString stringWithFormat:@"categoryId=%@",categoryId];
NSString *cat = [NSString stringWithFormat:@"&cityId=%@",cityId];
NSString *hostStr = @"http://localhost:8888/iphone-so/bycategory.json.php?";
hostStr = [hostStr stringByAppendingString:post];
hostStr = [hostStr stringByAppendingString:cat];
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:hostStr]];
NSError *error;
productsRaw = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
products = [productsRaw objectForKey:@"products"];
productKeys = [products allKeys];
}
2 ответа
Решение
- (void)viewDidLoad
{
[super viewDidLoad];
// create the activity indicator
UIActivityIndicator *indicator = [UIActivityIndicator alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGrey];
// add it
[self.view addSubview:indicator];
// animate it
[indicator startAnimating];
// your code
NSString *categoryId = catId;
NSString *post =[NSString stringWithFormat:@"categoryId=%@",categoryId];
NSString *cat = [NSString stringWithFormat:@"&cityId=%@",cityId];
NSString *hostStr = @"http://localhost:8888/iphone-so/bycategory.json.php?";
hostStr = [hostStr stringByAppendingString:post];
hostStr = [hostStr stringByAppendingString:cat];
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:hostStr]];
NSError *error;
productsRaw = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
products = [productsRaw objectForKey:@"products"];
productKeys = [products allKeys];
// stop animating the indicator
[indicator stopAnimating];
}
Вы можете использовать MBProgressHUD, просто добавив файлы MBProgressHUD.h и MBProgressHUD.m в свой проект (вам может потребоваться конвертировать в ARC, если вы включили ARC)
// Add right after your [super viewDidLoad]; ] your start connection method or in viewdidload whatever....
- (void)viewDidLoad
{
[super viewDidLoad];
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.labelText = @"Loading...";
// rest of the code goes here
}
// Add at start of requestFinished AND requestFailed
[MBProgressHUD hideHUDForView:self.view animated:YES];