ViewControllers的NSMutableArray

我正在琢磨如何创build视图控制器的NSMutableArray。

然后,一旦我有了这个数组,我怎么能在检测左右UIgesture滑动的方法中使用它来animation进出视图…

这是拾取我的手势,只是在两个视图之间animation的方法,但是我想在视图控制器数组中的许多视图之间进行animation处理。

- (void)swipedScreen:(UISwipeGestureRecognizer*)gesture { //Left swipe if (gesture.direction == UISwipeGestureRecognizerDirectionLeft) { [UIView animateWithDuration:0.25 animations:^{ [self.detailViewB.view setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; [self.detailViewA.view setFrame:CGRectMake(-320, 0, self.view.frame.size.width, self.view.frame.size.height)]; }]; } //Right swipe else if (gesture.direction == UISwipeGestureRecognizerDirectionRight){ [UIView animateWithDuration:0.25 animations:^{ [self.detailViewA.view setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; [self.detailViewB.view setFrame:CGRectMake(320, 0, self.view.frame.size.width, self.view.frame.size.height)]; }]; } } 

作为一个方面,我有一个主视图控制器,我加载这些视图控制器作为子视图…以及至less这是计划..我目前正在做这个与视图…

http://dl.dropbox.com/u/53813770/SMPrototypeB.zip

更新:

这里是一个graphics显示你们,我正在努力实现。

在这里输入图像说明

下面是代码,它从数组中加载视图..谢天谢地,真是一个痛苦。

 DetailViewController *DVCA = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:[NSBundle mainBundle]]; DetailViewControllerB *DVCB = [[DetailViewControllerB alloc] initWithNibName:@"DetailViewControllerB" bundle:[NSBundle mainBundle]]; DetailViewControllerC *DVCC = [[DetailViewControllerC alloc] initWithNibName:@"DetailViewControllerC" bundle:[NSBundle mainBundle]]; //Create Array of views viewArray = [NSArray arrayWithObjects:DVCA, DVCB, DVCC, nil]; // set detail View as first view UIViewController *recordController = [viewArray objectAtIndex:0]; // This was the bit causing me so many issues. [self.view addSubview:recordController.view]; 

看看你的项目,看到你的根视图控制器实际上是一个导航控制器,我要重新发布作为答案。

如果你的初始视图控制器是一个导航控制器,那么操作系统给你你正在寻找的数组,这是UINavigationController的viewControllers属性。 这是不变的,但你可以做一个可变的副本。

我正在琢磨如何创build视图控制器的NSMutableArray。

与创build任何其他对象数组的方式相同:

  1. 创build对象。

  2. 把它们放在数组中。

您当然可以在您的应用程序委托或根视图控制器中执行此操作 – 无论哪个对象负责所有其他视图控制器。 我可能会去应用程序委托pipe理视图控制器。 然后,您可以将第一个响应者设置为滑动手势识别器的目标,并实现在应用程序委托(属于响应者链中的一部分)中的视图控制器之间切换的操作。

如何使用开箱即用的UIScrollView来获得相同的效果? 它支持多个方向的滚动,可以节省开发新控件的所有开销,而且不用担心违反任何HIG指南。