制作向导的最佳方式

时间:2012-09-08 04:18:20

标签: macos wizard

我需要创建一个包含多个交互式页面的向导,以收集用户的数据。通过制作每一个窗口,制作这么多页面是一项艰巨的工作。是否有任何简单的类或命令来管理它?

2 个答案:

答案 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中。