Прежде всего: мой вопрос очень теоретический. Даже если я опубликую пример, я просто хочу знать, какая реализация является лучшей для решения этой проблемы. Может быть, вы будете смеяться, когда будете читать этот вопрос, потому что он очень принципиален - но я хочу понять, как справиться с такой ситуацией.
Представьте себе следующее: у вас есть приложение, которое взаимодействует с внешним API через XML. Фактически это представление не может появиться сразу, потому что API нужно время, чтобы среагировать. Моя идея заключалась в том, чтобы реализовать подпредставление, которое содержит анимацию загрузки. Когда API отправляет ответ, это подпредставление удаляется, и появляется главное представление. Вот мой пример:
- (void)viewWillAppear:(BOOL)animated {
UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
[myView setBackgroundColor:[UIColor whiteColor]];
myView.tag = 1;
UIActivityIndicatorView *loadingView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
loadingView.frame = CGRectMake(145, 160, 25, 25);
[myView addSubview:loadingView];
[self.view addSubview:myView];
[loadingView startAnimating];
}
- (void)viewDidAppear:(BOOL)animated
{
[self loadXMLData];
[self.tableView reloadData];
[[self.view viewWithTag:1] removeFromSuperview];
}
Все работает отлично. Моя проблема заключается в следующем: не только это представление, где я должен сделать это. Мои приложения состоят из множества представлений, так как лучше всего избежать повторения этого кода? Я подумал о следующем: я изменяю селектор viewDidAppear (UIKit UIViewController) и помещаю код в него. Я не знаю, позволяет ли Apple менять свои рамки. Кроме того, это выглядит очень грязно для меня; o) Кто-то может сказать мне, как это обычно делается? Спасибо!
(надеюсь, вы понимаете меня, мой родной язык не английский :-()