1

我正在研究如何创建视图控制器的 NSMutableArray。

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

这是拾取我的手势的方法,它只是在两个视图之间制作动画,但是我想在视图控制器数组中的尽可能多的视图之间制作动画。

- (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)];
        }];

    }
}

作为一个方面,我有一个主视图控制器,我将这些视图控制器作为子视图加载...至少这是计划。我目前正在使用视图执行此操作...

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

更新:

这是一张图表,向你们展示了我想要达到的目标。

在此处输入图像描述

这是让它从数组中加载视图的代码。谢天谢地,真是痛苦。

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];
4

3 回答 3

0

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

于 2012-05-31T02:25:51.407 回答
0

我正在研究如何创建视图控制器的 NSMutableArray。

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

  1. 创建对象。

  2. 将它们放入数组中。

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

于 2012-05-31T00:04:15.187 回答
0

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

如果您的初始视图控制器是导航控制器,那么操作系统会为您提供您正在寻找的数组,它是 UINavigationController 上的 viewControllers 属性。这是不可变的,但您可以制作它的可变副本。

于 2012-05-31T00:06:59.513 回答