Как реализовать сегментированное управление внутри кнопки отправки в iOS (Xcode)? - PullRequest
0 голосов
/ 06 октября 2018

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

"Невозможно присвоить значение типа" 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 Ответ

0 голосов
/ 06 октября 2018

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

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

display.text = "Hello " + txtname + ", " + "Address: " + txtaddress<br> + ", " + "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

...