Authing 文档文档
快速开始
概念
使用指南
开发集成 V2 arrow
  • V2 文档
  • V3 文档
元数据
应用集成
身份自动化
加入 APN
开发集成
多租户(内测版)
控制台文档
多租户控制台
租户控制台
Saas 应用 Demo
快速开始
概念
使用指南
开发集成 V2 arrow
  • V2 文档
  • V3 文档
元数据
应用集成
身份自动化
加入 APN
开发集成
多租户(内测版)
控制台文档
多租户控制台
租户控制台
Saas 应用 Demo
旧版
开发集成
  • JavaScript SDK 索引
  • 单点登录(SSO)
  • 登录组件 (Guard)

  • 多因素认证组件(MFA)

  • JavaScript / Node.js

  • Java / Kotlin

  • Python

  • C#

  • PHP

  • Go

  • Ruby
  • Delphi
  • Android

  • iOS

    • 快速开始
    • 托管页
    • 超组件

      • 教程

        • 入门示例
        • 基础登录示例
        • 复杂登录示例
        • 完善登录界面
        • 基础注册示例
        • 复杂注册示例
        • 登录注册转场
        • 手机号码重置密码
        • 邮箱地址重置密码
        • 动态重置密码
      • 基础组件

      • 社会化组件

    • APIs

    • 第三方身份源

    • 典型场景

    • 私有化部署
    • 生物认证
    • iOS Guard 更新日志
    • 返回码对照表
  • Flutter

  • 微信小程序
  • 微信网页授权
  • React Native
  • 框架集成

  • Radius
  • 错误代码

¶ 复杂注册示例

更新时间: 2025-06-11 08:01:00
编辑

阅读此教程之前,确保已经完成了 开发准备

在上一个 基础注册教程 里面,我们构建了一个简单的注册界面,接下来我们尝试构建一个更为复杂的注册界面,它包含一个可以切换注册方式的 Tab,支持邮箱+密码注册以及电话号码+验证码注册

¶ 放置 RegisterMethodTab

放置一个 UIView,将其类型改为 RegisterMethodTab

RegisterMethodTab 可以用来切换注册方式,它可以根据控制台设置动态调整显示类容,更多信息请参考 详细说明

¶ 放置手机号+验证码登录相关组件

放置一个 TextField,将其类型改为 PhoneNumberTextField

放置一个 TextField,将其类型改为 VerifyCodeTextField

放置一个 Button,将其类型改为 GetVerifyCodeButton

iOS 默认按钮文字较大,我们修改一下 GetVerifyCodeButton 的属性,同时去掉默认的 "Button" 文字

更多 GetVerifyCodeButton 属性设置,请参考 详细说明

运行看看效果:

drawing

现在可以通过手机号+验证码成功注册!因为 Guard 内部的实现优先选择手机号+验证码的方式。

到目前为止,我们只是简单地将所有控件都放置到了界面上。接下来,我们需要将组件分组,从而实现切换效果。

¶ 放置 RegisterContainer 并将组件添加到容器里面

放置两个 UIView,将它们的类型改为 RegisterContainer

将 EmailTextField、PasswordTextField、PasswordConfirmTextField 放到第一个 RegisterContainer 里面。

将 PhoneNumberTextField、VerifyCodeTextField、GetVerifyCodeButton 放到第二个 RegisterContainer 里面。

调整位置和间距。可以参考下面布局:

小技巧: 在 IB 里面放置重叠的控件时,xcode 会修改层级关系。我们可以先把两个 RegisterContainer 放置在不同的区域,调整好大小以及内部控件位置后,将其中一个拖放至目标位置,再通过手动修改第二控件的 Y 坐标来实现重叠效果。

¶ 修改邮箱注册 RegisterContainer 类型

这时如果运行应用程序,会发现“邮箱注册”容器里面为空。因为 RegisterContainer 默认类型为 0,表示通过手机号码+验证码注册,因此,我们需要将邮箱注册的 RegisterContainer 的类型改为 1。首先在 ViewController 里面声明一个 @IBOutlet 成员变量

@IBOutlet weak var emailContainer: RegisterContainer?

然后绑定此变量

修改类型

override func viewDidLoad() {
    super.viewDidLoad()
    emailContainer?.type = 1
}

¶ 完成

drawing drawing
上一篇: 基础注册示例 下一篇: 登录注册转场
  • 放置 RegisterMethodTab
  • 放置手机号+验证码登录相关组件
  • 放置 RegisterContainer 并将组件添加到容器里面
  • 修改邮箱注册 RegisterContainer 类型
  • 完成

用户身份管理

集成第三方登录
手机号闪验 (opens new window)
通用登录表单组件
自定义认证流程

企业内部管理

单点登录
多因素认证
权限管理

开发者

开发文档
框架集成
博客 (opens new window)
GitHub (opens new window)
社区用户中心 (opens new window)

公司

400 888 2106
sales@authing.cn
北京市朝阳区北辰世纪中心 B 座 16 层(总)
成都市高新区天府五街 200 号 1 号楼 B 区 4 楼 406 室(分)

京ICP备19051205号

beian京公网安备 11010802035968号

© 北京蒸汽记忆科技有限公司