Нажатие кнопки Отмена не убирается - PullRequest
0 голосов
/ 23 августа 2010

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

Ниже мой код:

Чтобы создать кнопку на панели навигации:

UIBarButtonItem *clearButton = [[[UIBarButtonItem alloc] initWithTitle:@"Clear     History"
                                                                      style:UIBarButtonItemStyleBordered
                                                              target:self
                                                              action:@selector(ClearHistoryAction:)] autorelease];
self.navigationItem.leftBarButtonItem = clearButton;

Когда я нажимаю и запускаю лист действий:

   - (IBAction)ClearHistoryAction:(id)sender
  {
UIActionSheet *actionSheet = [[UIActionSheet alloc]
                              initWithTitle:@"Clear History?"
                              delegate:self
                              cancelButtonTitle:@"Cancel"
                              destructiveButtonTitle:@"OK"
                              otherButtonTitles:nil];


// use the same style as the nav bar
actionSheet.actionSheetStyle = self.navigationController.navigationBar.barStyle;    

[actionSheet showInView:self.view];
    [actionSheet release];


    }

Если выбрано ОК, сделайте это:

  - (void)actionSheet:(UIActionSheet *)actionSheet

 didDismissWithButtonIndex:(NSInteger) buttonIndex
  {
if (!buttonIndex == [actionSheet cancelButtonIndex])
{

    //do what i want here!
}
  }

В заголовочном файле UIActionSheetDelegate включено в @interface.

Ответы [ 3 ]

1 голос
/ 27 августа 2012

Поздно, но возможное объяснение может быть:

Кажется, проблема с панелью вкладок. Если вы звоните UIActionSheet

[sheet showInView:self.view]

из контроллера представления, который является дочерним для UITabViewController, затем проверка нажатия кнопки отмены не выполняется в этой части UIActionSheet, который находится над панелью вкладок.

Если вместо этого вы передаете представление UITabBarController, тогда UIActionSheet работает как положено.

[sheet showInView:self.parentViewController.tabBarController.view];

Более подробное объяснение здесь: UIActionSheet кнопка отмены странное поведение

0 голосов
/ 20 марта 2011

Вам нужно использовать showFromBarButtonItem вместо showInView.Проблема в том, что кнопка отмены закрывается другим видом - может быть, панелью инструментов или вкладкой - поэтому она не получает сенсорные события, которые, как вы думаете, должны быть получены.Есть также showFromTabBar и showFromToolbar, которые иногда следует использовать (см. Ссылку на класс UIActionSheet).

0 голосов
/ 23 августа 2010

Я не знаю, решит ли это эту проблему, но вы захотите сделать buttonIndex != [actionSheet cancelButtonIndex] (отметьте неравенство) вместо !buttonIndex == [actionSheet cancelButtonIndex] (инвертировать buttonIndex (!) И проверьте, равно ли это) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...