Как реализовать сегментированное управление внутри кнопки отправки в 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