Как реализовать сегментированное управление внутри кнопки отправки в iOS (Xcode)?

У меня есть сегментированный элемент управления для пола внутри кнопки отправки, однако он выдает ошибку, заявляющую:

Msgstr "Невозможно назначить значение типа"String"для типа"UISegmentedControl!" "

Кто-нибудь знает, как правильно кодировать сегментированные элементы управления внутри кнопки, чтобы, когда пользователь нажимает кнопку отправки, он отображал выбранный пол на странице?

РЕДАКТИРОВАТЬ: Вопрос, на который я пытаюсь ответить:

"Внедрить приложение, включающее поля ввода для имени, адреса и степпера (для возраста) и двух сегментированных элементов управления (для" мужского / женского "и" зарегистрированного / не зарегистрированного "). Когда пользователь нажимает кнопку" Отправить ", отображается сообщение на странице, такое как Привет, Имя, Адрес: Адрес, Возраст: Возраст, Пол: Мужской / Женский, Статус: Зарегистрирован / Не Зарегистрирован. "

Вот моя кодировка:

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var nametxt: UITextField!
@IBOutlet weak var age: UIStepper!
@IBOutlet weak var addresstxt: UITextField!
@IBOutlet weak var status: UISegmentedControl!
@IBOutlet weak var gender: UISegmentedControl!
@IBOutlet weak var display: UILabel!


override func viewDidLoad() {
    super.viewDidLoad()

    age.wraps = true
    age.autorepeat = true
    age.maximumValue = 100
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func submit(_ sender: Any) {
    var txtname : String
    var txtaddress : String
    txtname = nametxt.text!
    txtaddress = addresstxt.text!


    if self.gender.selectedSegmentIndex == 0 {
        gender = "male"
    }

    if self.gender.selectedSegmentIndex == 1 {
        gender = "female"
    }

    display.text = "Hello " + txtname + ", " + "Address: " + txtaddress  
    + ", " + "Gender: " + gender

  }
 }

1 ответ

Решение

Причина возникновения этой ошибки просто описывается компилятором:) Просто используйте String вместо SegmentControl... пол - это тип SegmentControl, поэтому вы не можете объединить его с другими строками...

использование titleForSegment(at:) чтобы получить правильное строковое значение

display.text = "Hello " + txtname + ", " + "Address: " + txtaddress
+ ", " + "Gender: " + gender.titleForSegment(at: gender.selectedSegmentIndex)

И вы можете избавиться от условий выше...

Другой вариант - установить новую частную собственность внутри IBAction

@IBAction func submit(_ sender: Any) {
    // Fixed your codestyle and semantics as well
    let txtname = nametxt.text ?? "missing name"
    let txtaddress = addresstxt.text ?? "missing address"

    let txtgender = gender.titleForSegment(at: gender.selectedSegmentIndex)
    display.text = "Hello " + txtname + ", " + "Address: " + txtaddress  
    + ", " + "Gender: " + txtgender

  }
 }

https://developer.apple.com/documentation/uikit/uisegmentedcontrol/1618561-titleforsegment

Другие вопросы по тегам