在 iOS 的 UITabbarcontroller 中添加 Actionsheet
Posted
技术标签:
【中文标题】在 iOS 的 UITabbarcontroller 中添加 Actionsheet【英文标题】:Add Actionsheet in UITabbarcontroller in iOS 【发布时间】:2013-08-12 02:08:57 【问题描述】:我在 UIViewController 中创建了 UITabbar。然后我向它添加了一个 UIActionSheet,但是当操作表出现时,当单击“取消”按钮的顶部时,它可以工作,但是当我单击“取消”的底部时,没有响应。我使用此代码添加操作表:
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:].
你有什么建议吗?提前致谢
【问题讨论】:
How to display the UIActionSheet view from above Tab Bar Controller?的可能重复 【参考方案1】:试试:
[actionSheetDelete showFromTabBar:self.tabBarController.tabBar];
【讨论】:
我试过你的代码,但它显示 errr:Assertion failure in -[UIActionSheet _presentSheetFromView:above:], /SourceCache/UIKit_Sim/UIKit-2380.17/UIActionSheet.m:1778 2013-08-12 14: 34:37.905 Cloudstringers[4253:c07] *** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无效参数不满足:视图!= nil”【参考方案2】:您可以在 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];
【讨论】:
showFromTabBar
of UIActionSheet
旨在与 UITabbar
一起使用
是的,尽管我认为我更喜欢showInView:[UIApplication sharedApplication].keyWindow
方法。这样我的视图控制器就不必知道它是否在 UITabBarController
中呈现。
这不是正确的方法...查看我的答案。
我想这取决于你的目标。就我个人而言,我不喜欢编写取决于视图控制器呈现方式的视图控制器代码。【参考方案3】:
您正试图从视图本身显示操作表。考虑到您已经在视图中拥有了 UITabBarController,这无法完成。因此,您必须在显示时从选项卡栏中进行设置。这将确保按钮不会加载到选项卡栏的视图下方,并允许与选项卡栏关联的所有操作可用。
因此,你应该使用
[actionSheetDelete showFromTabBar:];
这样标签栏是显示操作表的初始位置 希望这会有所帮助!
【讨论】:
以上是关于在 iOS 的 UITabbarcontroller 中添加 Actionsheet的主要内容,如果未能解决你的问题,请参考以下文章
当 UIViewController 模态显示时,UINavigationController(在 UITabBarController 选项卡内)丢失堆栈
我想要一个没有 UITabBar 的 UITabBarController
尝试在控制器之间传递信息失败,但可以从 AppDelegate 到控制器