UIPopoverController дублирует себя по какой-то причине - PullRequest
0 голосов
/ 04 января 2011

Очень своеобразная ошибка:

У меня есть BarButtonItem, который выдает UIPopoverController следующим образом:

-(void) addNewProjectButtonClicked:(id)sender
{
    //Some Preparations....

    [popover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}

Как и ожидалось, попловер контроллер появляется в нужном месте.

Теперь я ожидаю, что когда я коснусь ВСЕГДА за пределами поповера, он будет отклонен.
Ну, единственная проблема заключается в том, что когда я снова нажимаю на BarButton (тот, который выскакивает поповер), вместо того, чтобы отвергать старый и представлять новый, как я и ожидал, результатом будет ANOTHER Popover поверх существующий. это означает, что когда я нажимаю снова и снова, я получаю кучу всплывающих окон, которые можно отклонить только несколькими щелчками мыши в другом месте.

Я знаю, что я могу использовать некоторые банки Singleton Design Pattern, чтобы решить эту проблему, но нет ли более простого и встроенного способа позаботиться об этом?

Спасибо!

1 Ответ

2 голосов
/ 04 января 2011

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

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

-(void) addNewProjectButtonClicked:(id)sender
{
    [popover dismissPopoverAnimated:YES];
    // Set it up again.
    [popover ...];
}

Вы можете использовать свойство для легкого управления памятью или обрабатывать его самостоятельно.

...