将视图推入当前根视图下方的堆栈

时间:2011-12-13 14:05:21

标签: ios uinavigationcontroller

我尝试实现类似界面的日历,左箭头和右箭头允许用户及时/向前滚动。为此,我使用导航控制器,并在堆栈上推送/弹出视图。

但是,如果我目前正在查看根视图,如果我试图及时导航,我无法弹出视图以获得正确的动画方向,该怎么办? / p>

我上周在Stack Overflow上发现了一篇文章,演示了一种方法,将新视图推送到当前根视图下方的堆栈上,从而允许弹出根视图。它只是几行代码 - 主要是获取堆栈中当前项的数组,并以某种方式将新视图推送到当前活动视图下方。不幸的是,我似乎无法再找到那个特定的帖子......

是否有人发生过相同的链接,或者可能指向正确的方向?我之前的工作正常,由于计算机故障导致我的工作失去了一些工作。

编辑:

通过一些实验,我有部分工作......

// create new view controller
ViewController *viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];

// add below root        
NSMutableArray *allViews = [[NSMutableArray alloc] initWithArray:self.navigationController.viewControllers];
[allViews insertObject:viewController atIndex:0];
[viewController release];

self.navigationController.viewControllers = allViews;
[[self navigationController] popViewControllerAnimated:YES];

[allViews release];

它似乎确实泄漏了内存,但是 - 如果我执行allViews数组的NSLog,每次我及时前进然后回到上一个视图,它似乎为数组添加了一个额外的视图#39;稍后取消。这将暂时有用,但希望我能解决这个问题。

1 个答案:

答案 0 :(得分:1)

UINavigationController Class Reference
我认为你在谈论@property(nonatomic, copy) NSArray *viewControllers 引用参考文献:

  

<强>讨论
  根视图控制器位于数组中的索引0处,后视图控制器位于索引n-2处,顶部控制器位于索引n-1处,其中n是数组中的项目数。
  为此属性分配新的视图控制器数组等效于调用setViewControllers:animated:方法,并将动画参数设置为NO。

这是您要查找的信息吗?


对于您要做的事情,您可能会考虑使用UIView中的内容。

  

transitionFromView:toView:持续时间:选择:完成:
  使用给定参数在指定视图之间创建过渡动画。