UIActionSheet от UIAlertView - PullRequest
       38

UIActionSheet от UIAlertView

3 голосов
/ 29 ноября 2011

Я пытаюсь показать UIActionSheet, когда пользователь касается кнопки в UIAlertView:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{
    if (buttonIndex == 0)
    {
        UIActionSheet *actionSheet = ...
        [actionSheet showFromTabBar:self.tabBarController.tabBar];
    }
}

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

Я пытался сделать несколько вещей, например, показать лист действий после небольшой задержки или программно отключить представление предупреждений, но ничего не получалось. В лучшем случае (программно отклоняя представление предупреждений) представление предупреждений исчезло после несколько странного перехода, но я получил сообщение об ошибке «wait-fence fail to get receive» в журнале, когда это произошло.

Как упорядоченно показать лист действий из представления предупреждений?

Ответы [ 2 ]

16 голосов
/ 29 ноября 2011

В этом случае вам следует использовать метод

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex

вместо

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

, поэтому ваш код будет:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 0)
    {
        UIActionSheet *actionSheet = ...
        [actionSheet showFromTabBar:self.tabBarController.tabBar];
    }
}

Спасибо

1 голос
/ 29 ноября 2011

Просто вызовите dismissWithClickedButtonIndex: animated: метод для UIAlertView

if (buttonIndex == 0)
{
    [alertView dismissWithClickedButtonIndex:0 animated:YES];
    UIActionSheet *actionSheet = ...
    [actionSheet showFromTabBar:self.tabBarController.tabBar];
}
...