我的应用程序中的一个页面有一个按钮,用户可以在两个模式之间切换。页面的内容应根据所选的模式而有所不同。在这种情况下,推送另一个视图控制器是不正确的 - 新的UI组件应该位于同一页面上。
但是,我还没有发现如何在iOS中完成此操作。我已经看到容器视图(我无法在屏幕上显示)似乎有其他目的(可重用性)。我想我也可以手动隐藏/显示每个UI组件,具体取决于模式,但我想知道是否有更有效的方法(如在汇编视图中包装内容并隐藏/仅显示该内容)。
顺便说一下,我正在寻找尽可能使用Storyboard(或XIB)的解决方案。
答案 0 :(得分:1)
为所有不同的视图创建视图控制器,在需要时从故事板中获取它们(按下按钮后),将它们作为子项添加到主视图控制器addChildViewController
并将其视图添加到主视图中。您可以使用UIView animateWithDuration
以任意方式设置转换动画。
完成视图/视图控制器后,删除视图并使用removeFromParentViewController
从父视图中删除视图控制器。
答案 1 :(得分:1)
创建视图控制器,当用户单击按钮更改模式时,使用视图控制器的翻转而不是推视图控制器。下面是可以用来代替push
的代码 UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"idVC"];
vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:vc animated:YES completion:nil];
这将翻转视图控制器,此外,您可以关闭此视图控制器并继续正常的应用程序流程。