0

好吧,伙计,我正在为如何完成这个问题而摸不着头脑,所以我想把它公之于众。

本质上,客户想要的是一种基于用户选择“是”还是“否”选项来切换视图部分的方法。我的问题是我将如何实现这一目标?

请允许我提供更多细节。在这个特定的应用程序中驻留了一个表单(一个具有自定义文本字段、选择器视图、开关、滑块和其他 UI 元素的表单),这些表单都已在 Storyboard 中布局,然后被编程以发挥作用。在此表单的大约 3/4 处,用户将看到“是”或“否”选项以及每个选项的按钮。诀窍是每个视图都需要有自己的 UI 元素(文本字段、滑块和按钮)仅在选择其中一个选项并且仅在“是”或“否”选项下方(上面的所有元素都需要留在原地,并持有用户输入的信息)。

一个例子:如果用户点击“是”按钮,它下面会出现 3 行文本,后跟一个 UIButton 和文本字段。在此之下,将出现导航到其他 ViewController 的其他导航按钮。但是,如果用户点击“否”按钮,我刚才提到的所有这些项目都需要消失,而是需要出现一组不同的文本字段、标签、按钮和背景图像。导航按钮还需要链接到其他 ViewController,与“是”选项中的按钮不同。在这一点上,我向客户建议,将导航控制器植根于屏幕底部是一个好主意,但他们强烈反对这一点,而是希望导航选项是“动态的”

我曾想过通过简单地使用每个按钮加载不同的图像来以编程方式尝试这个,这很好用。然后挂钩变成双重的;1)当我尝试加载其他 UI 元素时,我无法将它们布置在情节提要中,因此它们出现在零星的位置和 2)所有这些都需要包含在滚动视图中,这也需要更改它的大小取决于在是和否选项下方需要多少空间。自然,“是”部分比“否”部分小 3 倍。

那么,关于如何使这一切发生的任何想法?在这一点上我应该提到,客户端也不希望简单地导航到不同的 ViewController,他们非常希望所有这些都发生在同一个屏幕上。我希望我有一些代码可以分享,但我们仍处于该项目的“设计”方面,因此编写的代码很少。任何建议都将不胜感激,因为我以前从未收到过这种类型的构建请求。

4

1 回答 1

1

创建一个 UINavigationController 对象并将您的视图(比如 yourViewController)设置为您的“是”和“否”按钮作为根视图控制器存在的位置,如下所示

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:yourViewController];

现在,当用户在 yourViewController 视图上按下是/否按钮时,您可以通过编程方式创建所有控件文本字段和按钮并根据您的视图设置框架。喜欢

UITextField *txtField = [[UITextField alloc] initWithFrame:CGRectMake(enter frame accordinglly)];
[self.view addSubview:txtField];

同样,您可以添加更多控件,例如按钮或任何其他控件。

之后,当用户按下任何按钮(您希望在其上显示另一个视图)时,您可以在 navController 中推送其他视图,如下所示

[navController pushViewController:otherViewController animated:YES];

您需要在 yourViewController 中跟踪 navController

当您想返回时,只需从 navController 弹出视图

    [navController popViewControllerAnimated:YES];

PS:请注意内存释放。

于 2013-06-28T06:55:16.030 回答