Получить строковое значение из выбранного сегмента UISegmentedControl - PullRequest
0 голосов
/ 14 января 2019

Я создал страницу регистрации (ViewController) и при выборе пола я использую UISegmentedControl для "мужской", "женский", "безразличный". Но как я могу получить значение из UISegmentedControl и поместить в словарь? Я использую пользовательский Dictionary<String, String> = [:] для регистрации, но 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")
        }
    }
}

1 Ответ

0 голосов
/ 14 января 2019

Вы получаете 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
}
...