调用setEnabled时,UIActionSheet中的子视图不会重绘

时间:2012-06-18 21:28:39

标签: ios cocoa-touch

我在搜索视图控制器中有一个按钮,它调用以下方法创建包含两个UIActionSheet的{​​{1}}(用于选择搜索设置)。当用户选择第一个分段控件上的某个按钮时,我想禁用(UISegmentedControl)第二个分段控件。问题是它不会重绘(因此它永远不会被禁用)。如果我在创建UIActionSheet时setEnabled:NO,那么它最初会被正确禁用。

我尝试通过调用setEnabled:NO强制重写第二个分段控件和操作表,但这不起作用。

还在第二个分段控件上尝试了removeFromSuperview。

内置的UIActionSheet无法实现这一点吗?或者有更好的方式让我显示搜索设置?这是一款针对iOS5编写的iPhone应用程序。弹出窗口不适用于iPhone。我能想到的另一种方法是让设置显示在它自己的视图中,但我想避免这种情况。

[UIView setNeedsDisplay]

1 个答案:

答案 0 :(得分:1)

我认为UIActionSheet不是向用户呈现设置视图的正确控件。

从课程参考文档:

  

使用UIActionSheet类向用户显示一组   如何继续执行给定任务的替代方案。你也可以使用   动作表提示用户确认有潜在危险   行动。操作表包含可选标题和一个或多个   按钮,每个按钮对应一个要采取的动作。

相反,你应该创建一个UIViewController子类并以模态或导航控制器的形式呈现它。

我不知道为什么setEnabled无法在您的代码中运行。 setNeedsDisplay不是必需的,控件应该重绘。检查updateSettingsUI和onSettingsButtonClick中的segType2是否是同一个对象。