Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UINavigationController';菜单';_Iphone_Ios_Uinavigationcontroller - Fatal编程技术网

Iphone UINavigationController';菜单';

Iphone UINavigationController';菜单';,iphone,ios,uinavigationcontroller,Iphone,Ios,Uinavigationcontroller,我正在尝试创建一个“书式”界面。我有一个plist,其中包含一个数组,告诉我哪个视图控制器是下一个“页面”。所以我检查一下,将页面推到堆栈上,并用plist中的信息填充它 不过我还需要一个“菜单”按钮,这样用户可以在页面之间快速切换。这很简单,但如果用户从第1页跳到第3页,然后使用“后退”按钮,它显然会跳回第1页。但是我需要它跳到第二页 实现这一目标的最佳方式是什么?我尝试过PoptoViewController:animated:但出现错误,告诉我我尝试弹出的vc不存在。我认为你不能通过弹出v

我正在尝试创建一个“书式”界面。我有一个plist,其中包含一个数组,告诉我哪个视图控制器是下一个“页面”。所以我检查一下,将页面推到堆栈上,并用plist中的信息填充它

不过我还需要一个“菜单”按钮,这样用户可以在页面之间快速切换。这很简单,但如果用户从第1页跳到第3页,然后使用“后退”按钮,它显然会跳回第1页。但是我需要它跳到第二页


实现这一目标的最佳方式是什么?我尝试过PoptoViewController:animated:但出现错误,告诉我我尝试弹出的vc不存在。

我认为你不能通过弹出viewControllers来实现。这是因为在你的navigationController.viewControllers数组中,你的page1索引为零,page3索引为1。当你执行PoptoViewController:animated:需要您可以直接访问上一个navigationController视图控制器,它的加载方式与您的情况类似,它的第1页加载在第3页之前。

也许您想要的根本不是一个
UINavigationController
?它旨在管理视图控制器堆栈,但您需要的是控制器列表

您可以创建自己的
UIViewController
自定义子类,该子类管理子视图控制器数组,用托管视图控制器中的视图填充
UIScrollView

这样,
UIScrollView
可以:

  • 为您处理寻呼
  • 后退、前进甚至跳跃只需设置
    contentOffset

您说您在一个plist中拥有所有视图控制器,因此它们不能太多。因此,无需担心托管视图控制器的动态创建和复杂的生命周期管理。

确定所需内容您需要推动每个页面以达到所需的页面

假设您想从1页转到4页,那么您需要根据您的视图编号设置一个整数变量(在app delegate类中设置为属性)。 然后根据plist推送下一个视图,然后检查所需页面(通过检查“保存在”属性中的页码和当前页码)。如果是,则仍然存在,否则按另一个。(这将完成每页的viewDidLoad)

记得当你得到你想要的页面时,把bool变量设置为NO


要管理页码,请在plist中再添加一项内容,即页码,然后创建逻辑。

谢谢。我知道这就是问题所在。如何让页面2加载到中间,这样我才能弹回它?有没有一种方法可以让我提前告诉navigationcontroller它的所有视图控制器?我正在尝试你的方法,但不断得到错误:“试图弹出到一个不存在的视图控制器”。我显示视图1,推送视图2,然后在尝试弹出回视图1时出错。这是因为当我尝试将I init/alloc放入视图的新实例时,我也想弹出视图吗?我应该在我的应用程序代理中创建所有视图吗?好的,问题解决了。我需要在应用程序委托中创建所有视图控制器,并弹出到这些引用。谢谢。很抱歉回复得太晚,但现在你以干净的奉献精神得到了解决方案,所以干杯。