Ios 从select UISegmentedControl段获取字符串值
我已经创建了一个注册页面(ViewController),在性别选择上,我使用了一个UISegmentedControl来表示“男”、“女”、“无所谓”。但是如何从UISegmentedControl获取值并将其放入字典中呢?我正在使用自定义的Ios 从select UISegmentedControl段获取字符串值,ios,swift,uisegmentedcontrol,Ios,Swift,Uisegmentedcontrol,我已经创建了一个注册页面(ViewController),在性别选择上,我使用了一个UISegmentedControl来表示“男”、“女”、“无所谓”。但是如何从UISegmentedControl获取值并将其放入字典中呢?我正在使用自定义的字典=[:]进行注册,但是UISegmentedControl不是字符串(显然),我得到了错误: 无法将“UISegmentedControl”类型的值分配给“String”类型 如何转换UISegmentedControl的结果以接收这些值 import
字典=[:]
进行注册,但是UISegmentedControl不是字符串(显然),我得到了错误:
无法将“UISegmentedControl”类型的值分配给“String”类型
如何转换UISegmentedControl的结果以接收这些值
import UIKit
import FirebaseAuth
import Firebase
class SignUpViewController: UIViewController{
@IBOutlet weak var nameField: UITextField!
@IBOutlet weak var emailField: UITextField!
@IBOutlet weak var birthdayField: UITextField!
@IBOutlet weak var passwordField: UITextField!
@IBOutlet weak var confirmpasswordField: UITextField!
@IBOutlet weak var instagramuserField: UITextField!
@IBOutlet weak var generoSegmentControl: UISegmentedControl!
@IBOutlet weak var DatePickerDate: UITextField!
@IBOutlet weak var signupOutlet: UIButton!
@IBAction func signupAction(_ sender: Any) {
if let name = self.nameField.text {
if let email = self.emailField.text {
if let birthday = self.birthdayField.text {
if let password = self.passwordField.text {
if let confirmpassword = self.confirmpasswordField.text {
if let instagramuser = self.instagramuserField.text {
if let gender = self.generoSegmentControl {
if password == confirmpassword {
print("Senhas iguais, podemos seguir")
}else {
print("As senhas precisam ser iguais")
}
self.auth.createUser(withEmail: email, password: password) { (user, error) in
if error == nil {
var user: Dictionary<String, String> = [:]
user["nome"] = name
user["email"] = email
user["nascimento"] = birthday
user["instagram"] = instagramuser
user["genero"] = gender
//Encoding email for Base 64
let key = Base64().encodingStringBase64(text: email)
let users = self.database.reference().child("usuarios")
users.child(key).setValue(user)
print("Sucesso ao cadastrar usuário!")
}else{
print("Erro ao cadastrar usuário, tente novamente!")
}
}
}else {
print("Escolha seu genero")
}
}else{
print("O campo usuário do instagram esta vazio")
}
}else{
print("As senhas não conferem")
}
}else{
print("Digite uma senha")
}
}else{
print("Digite a data do seu nascimento")
}
}else{
print("Digite seu e-mail")
}
}else{
print("Digite seu nome")
}
}
@IBAction func generoAction(_ sender: Any) {
let genIndex = generoSegmentControl.selectedSegmentIndex
switch genIndex {
case 0:
print("Homem")
case 1:
print("Mulher")
case 2:
print("Indiferente")
default:
print("Nada selecionado")
}
}
}
导入UIKit
导入FirebaseAuth
进口火基
类SignUpViewController:UIViewController{
@IBVAR名称字段:UITextField!
@IBOutlet弱var emailField:UITextField!
@ibvar生日字段:UITextField!
@IBOUTLE弱var密码字段:UITextField!
@IBOutlet弱var confirmpasswordField:UITextField!
@IBVAR instagramuserField:UITextField!
@IBOutlet弱分段控件:UISegmentedControl!
@IBOutlet弱var DatePickerDate:UITextField!
@IBOutlet弱var注册Outlet:UIButton!
@iAction func signupAction(\发送方:任意){
如果让name=self.nameField.text{
如果让email=self.emailField.text{
如果让生日=self.birthdayField.text{
如果让password=self.passwordField.text{
如果让confirmpassword=self.confirmpasswordField.text{
如果让instagramuser=self.instagramuserField.text{
如果让性别=自我控制{
如果密码==confirmpassword{
印刷品(“Senhas iguais,podemos seguir”)
}否则{
印刷品(“如senhas precisam ser Igais”)
}
self.auth.createUser(带电子邮件:电子邮件,密码:密码){(用户,错误)在
如果错误==nil{
var用户:Dictionary=[:]
用户[“nome”]=名称
用户[“电子邮件”]=电子邮件
用户[“nascimento”]=生日
用户[“instagram”]=instagramuser
用户[“慷慨”]=性别
//为Base 64编码电子邮件
let key=Base64()。编码StringBase64(文本:电子邮件)
让users=self.database.reference().child(“usuarios”)
users.child(key).setValue(user)
打印(“Sucesso ao地籍usuário!”)
}否则{
打印(“埃罗-奥乌萨里奥地籍,tente-Novatement!”)
}
}
}否则{
印刷品(“Escolha seu慷慨”)
}
}否则{
打印(“O campo usuário do instagram esta vazio”)
}
}否则{
印刷品(“如senhas não conferem”)
}
}否则{
印刷品(“Digite uma senha”)
}
}否则{
打印(“为seu nascimento提供数据”)
}
}否则{
打印(“Digite seu电子邮件”)
}
}否则{
印刷品(“Digite seu nome”)
}
}
@iAction func操作(\发送方:任意){
让genIndex=control.selectedSegmentIndex
开关genIndex{
案例0:
打印(“Homem”)
案例1:
打印(“Mulher”)
案例2:
打印(“独立的”)
违约:
印刷品(“纳达selecionado”)
}
}
}
您可以在代码中获得segmentedControl
,但它不是selectedSegmentIndex
属性。然后在收到selectedSegmentIndex后,您应该从控件中获取该索引的标题。使用以下内容更新您的代码:
if let gender = self.generoSegmentControl {
将其更改为:
let genderIndex = self.generoSegmentControl.selectedSegmentIndex
if let gender = self.generoSegmentControl.titleForSegment(at: genderIndex) {
}
或者更改更新字典的方式:
let index = gender.selectedSegmentIndex
if let segmentTitle = gender.titleForSegment(at: index) {
user["nome"] = name
user["email"] = email
user["nascimento"] = birthday
user["instagram"] = instagramuser
user["genero"] = segmentTitle
}
您可以在代码中获得
segmentedControl
,但它不是selectedSegmentIndex
属性。然后在收到selectedSegmentIndex后,您应该从控件中获取该索引的标题。使用以下内容更新您的代码:
if let gender = self.generoSegmentControl {
将其更改为:
let genderIndex = self.generoSegmentControl.selectedSegmentIndex
if let gender = self.generoSegmentControl.titleForSegment(at: genderIndex) {
}
或者更改更新字典的方式:
let index = gender.selectedSegmentIndex
if let segmentTitle = gender.titleForSegment(at: index) {
user["nome"] = name
user["email"] = email
user["nascimento"] = birthday
user["instagram"] = instagramuser
user["genero"] = segmentTitle
}
您可以获取segmentedControl选定选项卡的索引,对吗?因此,为什么不可以从填充值的数组(或任何数据模型)中获取字符串?我想您需要titleForSegment(at:),它将返回IB中配置的段名称。您的代码中不需要单独的字典。我不会使用SegmentedControl的标题,因为它是本地化的。相反,我要创建一个枚举,它有一个返回本地化名称的属性/func
localizedTitle()
,并在dict/model中保留性别的枚举值。您可以获取segmentedControl的选定选项卡的索引吗?因此,为什么不可以从填充值的数组(或任何数据模型)中获取字符串?我想您需要titleForSegment(at:),它将返回IB中配置的段名称。您的代码中不需要单独的字典。我不会使用SegmentedControl的标题,因为它是本地化的。Ins