- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 iOS 6.1(模拟)和 6.1.3(物理设备)上运行的 iOS 应用程序中,我们使用以下代码从 View 中显示 UIActionSheet:
UIActionSheet *actionCreateNewComment = [[UIActionSheet alloc] initWithTitle:CLocalised(@"EditExistingComment") delegate:self cancelButtonTitle:CLocalised(@"No") destructiveButtonTitle:nil otherButtonTitles: CLocalised(@"Yes"), nil];
[actionCreateNewComment setActionSheetStyle:UIActionSheetStyleBlackOpaque];
[actionCreateNewComment setTag:ActionSheetTagNewComment];
[actionCreateNewComment showFromToolbar:self.navigationController.toolbar];
[actionCreateNewComment release];
View 设置工具栏:
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:control];
[self setToolbarItems:[NSArray arrayWithObject:item]];
其中 control
是 UISegmentedControl
。
处理按钮操作的代码是:
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
bool shouldAddNewComment = buttonIndex == [actionSheet cancelButtonIndex];
[self navigateToCommentScreen:shouldAddNewComment];
}
每次显示此操作表时,工具栏都会变为“空白”。不仅适用于该 View ,还适用于其他 View 。
以下是工作流程的示例:
请注意,如果我在没有 UIActionSheet 的情况下从 Instr 导航到 Comment,但使用相同的代码,则不会出现问题。
这里的问题是在“Instr” View 中工具栏是空的。如果我再弹出两个 View 以返回“列表”,其工具栏也将为空:
即使我随后通过分配和初始化新表单然后推送它们导航回 WO 和 Instr,工具栏仍然是空的。
“列表” View 中还有另一个导航选项,显示“摘要” View 。根据数据,此 View 将在工具栏中显示有或没有按钮:
“摘要按钮”和“摘要为空”都是预期 View 。在显示 UIActionSheet 之后,在 Inst 和 Comment 之间导航之前,会显示“隐藏摘要”。但是,如果我导航到图片中显示为“Summary Empty”的“Summary” View (由于数据的缘故),那么工具栏将再次开始在任何地方工作。或者至少在我再次从 Instr View 中显示 UIActionSheet 之前。
在我看来,这有一些奇怪的事情:
在关闭操作表或如何显示它时,我是否错过了某些内容?
如果您需要更多信息,请告诉我。
更新:如果我在操作表按钮事件之后强制调用 [self setToolbarItems:nil]
,然后使用与之前相同的项目更新它,工具栏将按预期显示。这感觉不是正确的做法。
2013年5月28日更新:感谢@LOP_Luke,我发现如果我不从 -(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
导航到“注释” View ,而只是返回工具栏将再次开始工作。那么,当我导航到另一个 View 且 clickedButtonAtIndex
仍在调用堆栈上时,会出现某种问题吗?
更新2013-05-29:如果我添加一个方法:
-(void)commentScreenYes{
[self vanigateToCommentScreen:YES];
}
并将按钮代码更改为:
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
bool shouldAddNewComment = buttonIndex == [actionSheet cancelButtonIndex];
if(shouldAddNewComment){
[self performSelectorOnMainThread:@selector(commentScreenYes) withObject:nil waitUntilDone:NO];
return;
}
[self navigateToCommentScreen:shouldAddNewComment];
}
然后它将适用于取消按钮,但不适用于是按钮。取消按钮还将使工具栏在被"is"按钮“破坏”后再次工作。如果我通过此流程管道两个按钮(通过添加新方法),它们都会起作用。而且,如果我在 iOs 5.1 上运行它,无论我选择哪个流程,它都会工作。
最佳答案
– setToolbarItems
method 是特定于导航 Controller 的每个 subview Controller 的 UIViewController 方法。假设[self navigateToCommentScreen:shouldAddNewComment]
将新的 View Controller 推送到导航堆栈上,您也必须将新 View Controller 的工具栏项目设置为单独的调用,无论操作表正在做什么。例如,
-(void) navigateToCommentScreen:(bool) shouldAddComment{
CommentViewController* viewController = [[CommentViewController alloc] init];
[self.navigationController pushViewController:viewController animated:YES];
[viewController setToolbarItems:self.toolbarItems];
}
否则新的 View Controller 将没有工具栏项并且工具栏将为空白。
编辑
我创建了一个带有 Root View Controller 的导航 Controller ,该 Controller 具有带有 UISegmented 控件的工具栏。我通过 UIActionSheet 委托(delegate)方法将一个新的 View Controller 推送到导航堆栈上,然后将其弹出。工具栏正是 Root View Controller 上应有的样子(分段控件按预期淡入)。您必须对 Controller 执行一些更复杂的操作来设置导致工具栏项消失的工具栏项。如果没有看到 viewController 的源方法,就很难判断问题是什么。确保您没有将工具栏项设置为零或以某种方式使用空数组重置它们。
关于ios - 导航 Controller 工具栏在显示 UIActionSheet 后变为空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16422991/
我使用了两个不同的 NSArray 在自定义 TableView 中的两个不同标签中显示数据。如何使用 UIActionSheet(使用 UIActionSheet 的破坏性按钮)从 TableVie
这个问题我真的很困惑。我在我的应用程序中设置了两个 UIActionSheets。它们工作得很好,直到您使用 UIActionSheets 中的取消按钮。 当我离开该页面时,UIAactionShee
有没有办法以编程方式设置 UIActionSheet 的方向?我的 iPhone 方向是纵向,但 UIActionSheet 需要是横向。这可以吗? 编辑: 所以我的问题是我不想将 rootviewc
我正在初始化一个 UIActionSheet,我想从数组、集合或其他内容填充它的“otherButtonTitles”,如下所示 UIActionSheet* aSheet = [[UIActionS
这个问题已经有答案了: iPhone development: How to create colored or translucent background for UIActionSheet? (
他们有什么原因导致我的 UIActionSheet 需要一段时间才能加载吗?它在启动后工作正常,但是一旦我循环执行一些操作一两次,加载速度就非常慢,您可以看到灰色背景爬下来以完成图纸的绘制。 帮忙?
我有一个 uiactionsheet,按钮在我第一次按下或第二次按下时无法正常工作,但在尝试后只有多次。我尝试删除底部的取消按钮并保留按钮标题,但这些步骤都没有解决问题。这是我正在使用的代码: UIA
我正在尝试在我的应用程序中显示 UIActionsheet。它在纵向模式下工作得很好,但当我尝试让它以横向模式显示时,它仍然从底部滑入。但是,它不再像横向模式那样使用按钮并通过选择器控件进行显示。它只
我有一个像这样设置的 UIActionSheet: -(void)trash:(id)sender { UIActionSheet *sheet = [[[UIActionSheet alloc] i
在 Twitterific 应用程序中,有一个看起来像 UIActionSheet 的控件,但它看起来是自定义的。 我想知道如何使用水平行而不是默认垂直行中的按钮来创建具有相似外观和感觉的 View
我们可以更改破坏性按钮和其他按钮在 UIActionSheet 中出现的顺序吗?默认情况下,破坏性按钮(红色)显示在其他按钮上方,在我的应用程序中,我希望其他按钮显示在破坏性按钮上方。 最佳答案 没问
我读了很多相关内容。人们说,当其父级未设置为自动旋转时,它不会自动旋转。我尝试了一切但没有运气。我创建了基于 View 的应用程序(v4.2),并带有一个执行此操作的按钮: UIActionS
在操作表上将按钮设置为破坏性按钮的准则是什么。我的操作表包含两个按钮“取消”和“删除”,点击“取消”将关闭操作表,而点击“删除”将删除所选项目。我应该选择哪一个作为破坏性按钮? 最佳答案 来自类引用:
如何更改 UIActionSheet 按钮的颜色? 最佳答案 iOS 8 (UIAlertController) 如果您使用 UIAlertController,则非常简单。只需更改 UIAlertC
当我运行我的应用程序并单击操作表按钮时,会出现以下内容: Presenting action sheet clipped by its superview. Some controls might n
我想使用 UIActionSheet 来允许用户选择我的 iPhone 应用程序的两种模式之一。所以我不需要显示取消按钮。我只是想问他是否想选择模式一还是模式二。我尝试不添加它,但它不允许我添加,那么
我想要一个子类 UIActionSheet使用 block 方法而不是委托(delegate)。 我的问题是当我在 UIActionSheet 上调用 super 初始化时可变参数 ...在方法结束时
我想知道如何定制这样的 UIActionSheet: 当您按下按钮以显示此 View 时,它确实像 UIActionSheet 一样出现,但老实说,我不太确定他们没有使用包含两个按钮的 UIView
我有一个 iOS6 应用程序,它使用以下代码创建带有时间选择器的 UIActionSheet: - (void)willPresentActionSheet:(UIActionSheet *)acti
我有一个 UIActionSheet 来选择在我的应用程序中使用的时间。选择时间可以正常工作,但是当单击“完成”按钮时,我找不到隐藏操作表的方法。 我的代码是: -(void) showTimespa
我是一名优秀的程序员,十分优秀!