我有一个关于 iPad 上的 UIActionSheet 的问题。
当我从 presentFromBarButtonItem:animated:
呈现一个 Action 表并在此之后呈现另一个 Action 表(通过点击同一 UIToolbar 上的另一个 UIBarButtonItem)时,原始 UIActionSheet 保持打开状态。
看起来不是特别好。
我尝试遍历 self.view.subviews
并将 View 转换为 UIActionSheet 并调用其适当的 dismissWithClickedButtonIndex:animated:
方法,但是它不起作用。
例如:
- (void)pressBarButtonItem {
for (UIView *view in self.view.subviews) {
[(UIActionSheet *)view dismissWithClickedButtonIndex:-1 animated:YES];
}
}
任何帮助表示赞赏。
最佳答案
我想你的意思是 showFromBarButtonItem:animated:
而不是 presentFromBarButtonItem:animated:
?
当您点击另一个工具栏项目时,操作表不会在 iPad 上自动关闭,因为该工具栏已添加到操作表的传递 View 列表中。
在属性中保留对操作表的引用。调用 showFromBarButtonItem 后,使用 self.itemFooActionSheet = actionSheet;
将其保存在属性中。
在显示另一个项目的另一个操作表之前,请在 itemFooActionSheet 上调用 expireWithClickedButtonIndex。关闭它后,您可能还想释放 itemFooActionSheet 并将其设置为 nil,这样它就不会在内存中徘徊。
此外,当 Foo 项的操作表已经显示时,代码可能会尝试再次显示它。在显示项目 Foo 的操作表的方法中,首先检查 self.itemFooActionSheet 是否不为零,如果是,则显示它而不重新创建它或关闭+销毁当前的操作表并构建一个新的(旧的可能包含过时的信息)。
关于objective-c - 一次打开多个 UIActionSheets,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4530239/