我需要创建一个包含多个交互式页面的向导,以收集用户的数据。通过制作每一个窗口,制作这么多页面是一项艰巨的工作。是否有任何简单的类或命令来管理它?
答案 0 :(得分:2)
你可以采取几种方法来做到这一点。首先,您可以使用UINavigationController
,它允许您轻松地在多个视图控制器之间移动。如果你可以使用多个视图控制器,这可能是最好的选择。
要推送到导航堆栈中的下一个控制器,您可以使用:
UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"someID"];
[self.navigationController pushViewController:controller animated:YES];
UIScrollView
也是一个选项,但是当项目在屏幕上移动时需要仔细的手动内存管理,但这可以在一个类中完成。
[arrayOfViews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx,BOOL *stop) {
UIView *subView = [[UIView alloc] initWithFrame:CGRectMake(320 * idx, 0, 320, 480)];
float randNum = arc4random() % 255;
[subView setBackgroundColor:[UIColor colorWithRed:randNum/255.0 green:randNum/255.0 blue:randNum/255.0 alpha:1.0]];
[myScrollView addSubview:subView];
[myScrollView setContentSize:CGSizeMake(320 * (idx + 1), 480)];
}];
然后,您最后也是最灵活的选择就是制作主视图的子视图,然后您可以制作自己的自定义动画,了解每个项目在屏幕上的移动方式。
[UIView animateWithDuration:0.5 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
[someSubview setTransform:CGAffineTransformConcat(CGAffineTransformMakeScale(0.5, 0.5), CGAffineTransformMakeTranslation(-300, -300))];
}completion:^(BOOL done){
//some completion items
}];
答案 1 :(得分:1)
扩展H2CO3的评论,你可能希望使用UINavigationController,假设允许用户随意倒退。然后,为了前进,你只需将一个新的UIViewController推入堆栈。
或者,你可以查看故事板,它允许你连续定义整个事物,使用IB进行过渡。但是,无论如何最终都会嵌入到UINavigationController中。