SetupController 0.5.0

SetupController 0.5.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布日期最后发布日期2018年3月

miximka维护。



SetupController

CI Status Version License Platform

MBSetupController是一个继承自UIViewController的控制器,类似于 wizard setup assistant,可以展示一系列的对话框视图,引导用户完成一系列步骤。

它受到iOS设备首次设置过程中展示的iOS Setup.app应用程序的启发。

SetupController SetupController

特性

  • 支持横竖屏输出的iOS8通用应用程序。
  • 组件包中预定义了一些页面控制器,如MBTableViewPageControllerMBProgressPageControllerMBFinishPageController,它们为快速构建MBSetupController的页面提供了大量功能。
  • 预定义的MBTableViewPageController使用块而不是代理调用来保持表格视图的分段代码在同一个位置,支持自动布局和自动调整单元格大小(iOS8特性)。

演示项目

在仓库中包含了演示项目。要运行它,首先克隆仓库,然后从Example目录运行 pod install

需求

最低iOS目标 注意
iOS 8 -

安装

SetupController可以通过CocoaPods获取。要安装它,只需将以下行添加到Podfile中

pod "SetupController"

##架构

###Setup 视图控制器

  • MBSetupController

###页面视图控制器

  • MBBasePageController
    • MBTableViewPageController
    • MBProgressPageController
    • MBFinishPageController

###为 MBTableViewPageController 创建项和单元格

  • MBSetupPageItem
    • MBLabelItem
    • MBTextFieldItem
  • MBSetupPageCell
    • MBLabelCell
    • MBTextFieldCell

##快速开始

###实现setup控制器的数据源

  1. 继承 MBSetupController

    @interface MBSampleSetupController : MBSetupController <MBSetupControllerDataSource>
  2. 设置初始视图控制器

    - (void)viewDidLoad {
        [super viewDidLoad];
        MBAccountController *initialController = [[MBAccountController alloc] init];
        [self setViewControllers:@[initialController] animated:NO];
    }
  3. 实现 MBSetupControllerDataSource 协议

    - (UIViewController<MBPage> *)setupController:(MBSetupController *)setupController viewControllerAfterViewController:(UIViewController<MBPage> *)viewController {
        if ([viewController isKindOfClass:[MBAccountController class]]) {
            MBProgressController *progressController = [[MBProgressController alloc] init];
            progressController.labelTitle = @"It may take a while to set up your account...";
            return progressController;
        }
        
        return nil;
    }

###实现页面视图控制器

  1. 继承 MBTableViewPageController

    @interface MBAccountController : MBTableViewPageController

    下一步都在 -viewDidLoad 中。

  2. 创建分区

    MBSetupPageSection *section = [MBSetupPageSection sectionWithTitle:@"Configure Account"];
  3. 配置分区标题

    section.headerViewBlock = ^UIView*(MBSetupPageSection *section) {
        return [weakSelf preparedPageHeaderViewWithTitle:section.title];
    };
    
    section.headerHeightBlock = ^CGFloat(UITableView *tableView, MBSetupPageSection *section, UIView *view) {
        CGSize size = [view sizeThatFits:CGSizeMake(tableView.frame.size.width, 0)];
        return size.height;
    };
  4. 配置分区页脚

    section.footerViewBlock = ^UIView*(MBSetupPageSection *section) {
    	MBSectionFooter *footer = [weakSelf preparedFooterViewWithImage:[UIImage imageNamed:@"SampleImage"]
                                                                  title:@"Sign in with your account credentials"
                                                               subtitle:@"Your credentials should have been sent to you by administrator. Contact our support team if you have any questions."];
        [footer.topButton setTitle:@"Skip This Step" forState:UIControlStateNormal];
        [footer.topButton addTarget:weakSelf action:@selector(skip) forControlEvents:UIControlEventTouchUpInside];
        return footer;
    };
    
    section.footerHeightBlock = ^CGFloat(UITableView *tableView, MBSetupPageSection *section, UIView *view) {
        CGSize size = [view sizeThatFits:CGSizeMake(tableView.frame.size.width, 0)];
        return size.height;
    };
  5. 创建和配置文本字段项

    MBTextFieldItem *hostItem = [[MBTextFieldItem alloc] initWithTitle:@"Host" text:nil placeholder:@"example.com"];
    hostItem.keyboardType = UIKeyboardTypeURL;
    hostItem.autocorrectionType = UITextAutocorrectionTypeNo;
    hostItem.autocapitalizationType = UITextAutocapitalizationTypeNone;
    hostItem.textDidChangeBlock = ^(MBTextFieldItem *item) {
        [weakSelf validate];
    };
    hostItem.validateBlock = ^BOOL(MBSetupPageItem *item) {
        return [(MBTextFieldItem *)item text].length > 0;
    };
  6. 将项添加到分区

    section.items = @[hostItem];
  7. sections 属性设置为 MBTableViewPageController

    self.sections = @[section];

###显示Setup控制器

MBSampleSetupController *setupController = [[MBSampleSetupController alloc] init];
setupController.dataSource = setupController;

[self presentViewController:setupController animated:YES completion:nil];

作者

Maksim Bauer, [email protected]

许可证

SetupController在MIT许可证下可用。有关更多信息,请参阅LICENSE文件。