基本上客户想要的是根据用户是选择“是”还是“否”选项来切换视图的部分。我的问题是如何实现这一目标?
请允许我提供更多详情。在这个特定的应用程序中,有一个表单(一个包含自定义文本字段,选择器视图,开关,滑块和其他UI元素的表单),这些表单都已在故事板中布局,然后编程运行。在此表单的大约3/4处,用户将看到“是”或“否”选项以及每个选项的按钮。诀窍是每个视图都需要有自己的UI元素(文本字段,滑块和按钮),只有当选择了其中一个选项时才显示,并且只显示“是”或“否”选项(它上面的所有元素都需要保持,留在同一个地方并保存用户输入的信息。
示例:如果用户点击“是”按钮,则会在其下方显示3行文本,后跟UIButton和文本字段。在此下方,将出现导航到其他ViewControllers的其他导航按钮。但是,如果用户点击“否”按钮,我刚才提到的所有项目都需要消失,而是需要出现一组不同的文本字段,标签,按钮和背景图像。导航按钮还需要链接到其他ViewControllers,与“是”选项中的按钮不同。此时我向客户建议根据屏幕底部的导航控制器是一个好主意,但他们强烈反对这一点,而是希望导航选项是“动态的”(或根据哪个选项进行更改)按下,“是”或“否”)。
我曾想过通过简单地使用每个按钮加载不同的图像来编程地尝试这个,这很好用。然后这个故障变成双重的; 1)当我尝试加载其他UI元素时,我无法将它们放在故事板中,因此它们出现在零星的位置, 2)所有这些都需要包含在滚动视图中,滚动视图还需要根据yes和no选项下方需要多少空间来改变其大小。当然,“是”部分比“否”部分小3倍。
那么,关于如何实现这一切的任何想法?在这一点上我应该提到客户端也不希望简单地导航到不同的ViewController,他们非常希望所有这些都发生在同一个屏幕上。我希望我有一些代码要分享,但我们仍然处于这个项目的“设计”方面,因此,编写的代码非常少。任何建议都会非常感激,因为我之前从未接受过这种类型的构建请求。
答案 0 :(得分:1)
创建一个UINavigationController对象并设置您的视图(比如yourViewController),其中Yes和No按钮作为根视图控制器存在,如下所示
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:yourViewController];
现在,当用户按下ViewController视图上的YES / NO按钮时,您可以按编程方式创建所有控件文本字段和按钮,并根据您的视图设置框架。像
UITextField *txtField = [[UITextField alloc] initWithFrame:CGRectMake(enter frame accordinglly)];
[self.view addSubview:txtField];
同样可以添加更多控件,如按钮或任何其他控件。
之后当用户按下任何按钮(你想要显示另一个视图)时,你可以在navController中推送其他视图,如下所示
[navController pushViewController:otherViewController animated:YES];
您需要在yourViewController中跟踪navController
当你想从navController
返回pop视图时 [navController popViewControllerAnimated:YES];
PS:请注意内存释放。