Как я могу показать UIAlert сразу после выбора ячейки и завершить его после показа нового UIView? - PullRequest
0 голосов
/ 26 октября 2011

В моем приложении для iPhone, как я могу создать UIAlert (или какой-либо другой индикатор), который подчеркивает пользователю, что данные загружаются так, что:

  1. запускается, как только пользователь выбирает ячейкув UITableViewController A, и
  2. заканчивается после того, как UITableViewController B фактически отображается

Мой грубый поток будет тогда:

  • Контроллер A
    • Пользователь выбирает строку
    • Запускается оповещение
    • Данные загружаются при подготовке к контроллеру B
  • Контроллер B
    • в скажем viewDidLoadотключить индикатор загрузки

Нужно найти способ сделать это так, чтобы используемый индикатор «загрузки» действительно отображался на текущем виде сразу ...

1 Ответ

1 голос
/ 26 октября 2011

Лично я поступил бы так: сначала назначить предупреждение в заголовочном файле:

UIAlertView *alert;

, затем создать и представить предупреждение в методе tableView:didSelectRowAtIndexPath:.

alert = [[UIAlertView alloc] init....];
[alert show];
// start the loading process for your data to push to the next view

Затем, чтобы закрыть представление, просто сделайте это в вашем методе viewWillDisappear:animated: с помощью вызова, подобного следующему:

[alert dismissWithClickedButtonIndex:0 animated:YES];

Это должно гарантировать, что предупреждение будет отклонено до того, как будет представлено следующее представление.Надеюсь, это поможет.Если у вас есть какие-либо вопросы, я с радостью опишу более подробно

РЕДАКТИРОВАТЬ: чтобы отклонить оповещение из другого представления, вам нужно будет создать метод, в котором вы создадите оповещение, чтобы отклонить его.Импортируйте заголовок в представление, к которому он перемещается, найдите родительское представление дочернего элемента, а затем отклоните, когда захотите.Я объясню подробно ниже.Итак, во-первых, создайте метод для отклонения представления от родителя, который я просто буду называть Parent

- (void)dismissAlert {
    [alert dismissAlertWithClickedButtonIndex:0 animated:YES];
}

В представлении, к которому вы нажимаете, обязательно поставьте #import "Parent.h" вверхуфайл реализации.

Теперь осталось только найти представление и вызвать метод.Вы можете изменить место, где это вызывается, но для примера я просто собираюсь запустить таймер в методе viewDidAppear: в файле Child и перейти оттуда.

- (void)viewDidAppear:(BOOL)animated {
    [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(dismiss) userInfo:nil repeats:NO];
}

Затем создать dismiss method

- (void)dismiss {
    // find the Parent view, which is most likely the top view in the navigation stack
    // self.parentViewController will be the navigationController
    // calling childViewControllers gets the navigation stack, so we get the view from there
    [(Parent *)[[self.parentViewController childViewControllers] objectAtIndex:0] dismissAlert];
}

Я проверил это, и оно работает, так что, надеюсь, это поможет вам.Вы можете изменить временной интервал по своему усмотрению.Учитывая, что я не знаю иерархию вашего приложения, трудно сказать, где находится родительский вид по отношению к ребенку, но вы можете поэкспериментировать, чтобы найти его, если это не так.

...