2013-08-12 3 views
3

Я создал UITabbar в UIViewController. Затем я добавил в него UIActionSheet, но когда появился лист действий, когда нажата верхняя часть кнопки «Отмена», она работает, но когда я нажимаю нижнюю часть «Отмена», ответа нет. Я использовал этот код, чтобы добавить actionsheet:Добавить таблицу действий в UITabbarcontroller в iOS

actionSheetDelete = [[UIActionSheet alloc] initWithTitle:@"Do you want to continue?" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Delete Item(s)" otherButtonTitles:nil]; 
actionSheetDelete.actionSheetStyle = UIActionSheetStyleBlackOpaque; 
[actionSheetDelete showInView:self.view]; 
[actionSheetDelete release]; 

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

Presenting action sheet clipped by its superview. Some controls might not respond to touches. On iPhone try -[UIActionSheet showFromTabBar:] or -[UIActionSheet showFromToolbar:] instead of -[UIActionSheet showInView:]. 

Есть ли у вас какие-либо предложения? Заранее спасибо

+0

См. Мой ответ ... –

+0

Возможный дубликат [Как отобразить представление UIActionSheet сверху контроллера панели табуляции?] (Http://stackoverflow.com/questions/2774270/how-to-display-the-uiactionsheet- view-from-above-tab-bar-controller) – Raptor

ответ

1

Вы могли бы показать это в связи с UITabBarController:

actionSheetDelete = [[UIActionSheet alloc] initWithTitle:@"Do you want to continue?" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Delete Item(s)" otherButtonTitles:nil]; 
actionSheetDelete.actionSheetStyle = UIActionSheetStyleBlackOpaque; 
[actionSheetDelete showInView:self.tabBarController.view]; 
[actionSheetDelete release]; 

Кроме того, несколько более надежная версия может быть:

[actionSheetDelete showInView:[UIApplication sharedApplication].keyWindow]; 
+0

'showFromTabBar'' UIActionSheet' предназначен для работы с 'UITabbar' – Raptor

+0

Да, хотя я думаю, что я предпочитаю использовать метод showInView: [UIApplication sharedApplication] .keyWindow'. Таким образом, мой контроллер просмотра не должен знать, будет ли он представлен в 'UITabBarController'. –

+0

Это не правильный способ ... Проверьте мой ответ. –

2

Try:

[actionSheetDelete showFromTabBar:self.tabBarController.tabBar]; 
+0

Я пробовал ваш код, но он показывает errr: Ошибка подтверждения в - [UIActionSheet _presentSheetFromView: выше:], /SourceCache/UIKit_Sim/UIKit-2380.17/UIActionSheet.m:1778 2013-08-12 14:34 : 37.905 Cloudstringers [4253: c07] *** Завершение приложения из-за неперехваченного исключения «NSInternalInconsistencyException», причина: «Недопустимый параметр не удовлетворяет: view! = Nil» – user2669713

0

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

Таким образом, вы должны использовать

[actionSheetDelete showFromTabBar:]; 

так, что панель вкладок начальное положение, где лист действие проявляется Надеюсь, что это помогает!

Смежные вопросы