Проблема со строкой Swift 3.0

#ios #iphone #swift #swift3

#iOS #iPhone #swift #swift3

Вопрос:

У меня есть пользовательский вид выбора, и он отлично работает, но есть одна проблема. У вас есть возможность снова нажать кнопку, и представление выбора будет отклонено. Но когда он отклоняет текст в unbutton, он становится пустым и не остается прежним («Выбрать» — это кнопка, которая открывает окно выбора, и ее текст изменяется, когда вы выбираете что-то из окна выбора, чтобы отразить то, что вы выбрали. Я хочу, чтобы это произошло, если вы снова нажмете кнопку выбора (а не вид выбора), тогда текст в unbutton не изменится и станет пустым.

 var pickValue:AnyObject? {
        didSet{
            if let pickValue = pickValue{
                Select.setTitle("(pickValue)", for: UIControlState())
            }else{
                Select.setTitle("Select", for: UIControlState())
            }
        }
    }

@IBAction func Show(_ sender: AnyObject) {
        let pickercontrol  = LCTableViewPickerControl(
            frame: CGRect(x: 0, y: self.view!.frame.size.height   150, width: view.bounds.size.width - 50, height: 150),
            title: "Please pick an item",
            value: pickValue,
            items: ["minute", "hour", "day", "month", "year"],
            offset: CGPoint(x: 0, y: 0))
        pickercontrol?.tag = 1
        view.addSubview(pickercontrol!)
        pickercontrol?.show(in: view) { [weak self](sender, item) in
            guard let view = sender as? LCTableViewPickerControl else{
                return
            }
            view.dismiss()
            self?.pickValue = item as AnyObject?
        }


    }
  

Изображение при инициализации представления выбора и возможности выбора значения

Вот изображение проблемы. После повторного нажатия кнопки. Представление выбора отклоняется, и текст внутри кнопки становится пустым. Я хочу изменить его так, чтобы, если представление отклонено и в представлении выбора не выбрано значение, текст внутри кнопки оставался неизменным

Комментарии:

1. в будущем обязательно используйте формат «образец кода», а не «фрагмент кода». фрагмент кода предназначен для укладки коротких однострочных строк кода или имени функции. Формат примера кода (выполняемый путем отступа четырех пробелов или выделения и щелчка инструмента на панели форматирования) Предназначен для длинного кода и добавляет полосы прокрутки и т. Д. И Делает большие части кода более удобочитаемыми.

2. Я сделал это. Как вы думаете, вы можете это исправить

3. К сожалению, я ничего не знаю о swift. Сайт проходит рецензирование на предмет качества, и я просто помогал вашему сообщению выглядеть более привлекательным для других. Надеюсь, что кто-нибудь сможет найти ответ. Приветствия!

Ответ №1:

Вам нужно установить, какой элемент управления вы хотите. for UIControlState.normal

Комментарии:

1. Вы также можете рассмотреть возможность безопасного развертывания своих опций, а не принудительного их развертывания. Если инициализатор LCTableViewPickerControl возвращает необязательное значение, вы можете инициализировать его, а затем сказать: «guard let picker = pickercontrol else { return }» Это убережет вас от принудительного разворачивания (и сбоя, если оно равно нулю) при добавлении в качестве подвида.

2. Где вы изначально устанавливаете заголовок кнопки? Если вы делаете это в «viewWillAppear», он снова запустится после того, как вы отклоните модальное представление, поэтому, если вы устанавливаете заголовок там, он будет установлен на любое начальное значение. Я не совсем понимаю, что происходит с такой ограниченной картиной.

3. Сейчас я не могу подключиться к skype. У вас есть свой код на github или что-то в этом роде?

4. мое имя идентификатора skype и github — jackpaster22. Вы можете отправить мне сообщение по skype или github

5. не могли бы вы мне помочь

Ответ №2:

Другой вариант — сохранить текущий текст и при нажатии кнопки «Отклонить» присвоить выбранному сборщиком заголовку значение ранее сохраненной строки.

Это позволит вам прокручивать, делать любое количество выборок и после отмены возвращаться к исходному значению.