作为过去常常使用单独的xib的人,我认为我可以使用故事板,因为它看起来使用起来更简单,更容易开发。我一直在编写一个应用程序,其基本设置如下:
最重要的是UINavigationController(第一级)。然后我有多个UIViewControllers(第二级),里面有按钮,你可以点击它们在第二级UIViewControllers之间切换。
但是当我开始在第二级UIViewControllers之间切换时会出现问题。我首先想到这是NSMutableArrays的初始化问题,因为在我的代码中我有一个NSTimer设置为定期循环,当我在其中设置断点时发现,当我前进到下一个计时器tick事件时,似乎有不同的实例相同的NSMutableArrays和尝试将新值插入到这些数组中似乎是一种赌博,有时它可以工作,有时不工作(因为它可能会或可能不会插入到正确的实例中)。
然后,查看Debug Navigator下的内存使用情况,我发现了这个问题。 每次我"切换" UIViewControllers之间正在启动一个新的UIViewController以及所有新变量。
我用来在它们之间切换的代码是
-(void) perform {
[[[self sourceViewController] navigationController] pushViewController:[self destinationViewController] animated:NO];
}
或者基本上是推送segue过渡。这也解释了为什么当我试图切换回我的视图时,该视图上的数据丢失了,因为它是一个全新的视图。
有没有人知道如何在多个UIViewControllers之间切换(比如5),就像UITabViewController一样,除非没有标签栏?
答案 0 :(得分:1)
您可以执行此操作的第一个选项:您可以使用tabbarcontroller切换viewcontroller并隐藏tabbar。然后在buttonclick上设置tabbar索引。
第二个选项你可以这样做:创建一个以上的视图控制器,在这个viewcontroller子视图中,所有切换viewController,当你想切换viewcontroller时,只需通过委托将该视图控制器视图放到前面。
答案 1 :(得分:0)
您是否需要导航栏和顶级导航控制器提供的其他功能?
如果没有,您可以使用UIPageViewController
代替
您设置了所有二级视图控制器,然后只需告诉页面视图控制器显示哪一个。
如果你实现了相关的委托方法,它会自动提供滑动手势以在它们之间切换,并提供漂亮的动画以使它们在屏幕上和屏幕外显示。
您还可以在底部放置UIPageControl
,为每个VC显示一个点,并突出显示当前VC的点。