我想知道如何创建一个视图控制器的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];
答案 0 :(得分:0)
我想知道如何创建一个视图控制器的NSMutableArray。
与创建任何其他对象数组的方式相同:
创建对象。
将它们放入数组中。
您当然可以在您的app委托或根视图控制器中执行此操作 - 无论哪个对象负责所有其他视图控制器。我可能会让app delegate管理视图控制器。然后,您可以将第一个响应者设置为滑动手势识别器的目标,并实现操作以在应用程序委托(属于响应者链)中的视图控制器之间切换。
答案 1 :(得分:0)
查看您的项目并看到您的根视图控制器实际上是导航控制器,我将重新发布作为答案。
如果您的初始视图控制器是导航控制器,那么操作系统会为您提供您正在寻找的阵列,它是UINavigationController上的viewControllers属性。这是不可改变的,但你可以制作一个可变的副本。
答案 2 :(得分:0)
如何使用开箱即用的UIScrollView获得相同的效果?它支持多个方向的滚动,可以节省开发新控件的所有开销,而且您不必担心违反任何HIG指南。