Вы можете попытаться добавить дополнительные представления, которые вы добавляете или удаляете по мере необходимости. В окне «Владелец файла», «Первый ответчик», «Просмотр» и т. Д. Добавьте три UIView из библиотеки. Вы можете изменить их имена с «Вид» на «Проверка», «Загрузка» и «Ошибка».
Теперь откройте каждый и настройте его, как вам нравится, добавляя кнопки и метки и другие подобные вещи.
Вернувшись в XCode, объявите новые представления:
IBOutlet UIView *validView;
IBOutlet UIView *loadView;
IBOutlet UIView *errorView;
и обязательно сделайте соответствующие подключения в InterfaceBuilder. Любые действия, которые вы хотите связать с любым из этих представлений, должны работать отлично.
Теперь для переключения создайте действие (или три разных). Это может быть IBAction или нет, как вам нравится. В шапке:
-(void)showError;
Теперь для реализации вы можете захотеть что-то вроде этого.
-(void)showError {
// skip this if you always arrive from the validView
if ([validView superview]) {
[validView removeFromSuperview];
}
[self.view addSubview:errorView];
}
Вы можете полюбить анимацию, если хотите:
-(void)toggleErrorWithFlip {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.8];
[UIView setAnimationTransition:([errorView superview] ? UIViewAnimationTransitionFlipFromLeft : UIViewAnimationTransitionFlipFromRight)
forView:[self view]
cache:YES];
if ([errorView superview]) {
[errorView removeFromSuperview];
} else {
[[self view] addSubview:errorView];
}
[UIView commitAnimations];
}
Кнопка «Повторить» может вызвать действие в следующих направлениях:
-(IBAction)retryLoad {
[errorView removeFromSuperview];
[self.view addSubview:validView];
// do some stuff that retries whatever was tried and failed
}
Опять же, это может происходить с анимацией или без нее.
Если есть представление по умолчанию, к которому вы всегда обращаетесь (например, validatingView), то сделайте это первоначальным «View» и просто добавьте два других представления (например, loadView и errorView) поверх него. Это может сэкономить немного работы в зависимости от того, как вы хотите, чтобы дела шли.