Swift UIButton: выбранный эмодзи исчезает

Я использую 5 UIButton, и я получаю строку смайликов в этих кнопках. Но проблема в том, что когда я нажимаю кнопку, смайлики исчезают с экрана. Я предполагаю, что это проблема выделения или выбора цвета, но я не понял. Что я должен сделать для этого?

Мой код:

func buttonSelectedNot(){
    button1.selected = false
    button2.selected = false
    button3.selected = false
    button4.selected = false
    button5.selected = false
}

@IBAction func favoriteButtonAction(sender: UIButton) {

    // Save Data
    buttonSelectedNot()
    sender.selected  = !sender.selected;
    if (sender.selected)
    {
        sender.selected = true
        emojiString = (sender.titleLabel?.text)!
        print(emojiString)

    }
    else
    {
        print("Not Selected");

    }

}

Снимки: введите здесь описание изображения

введите здесь описание изображения


person jorjj    schedule 01.03.2016    source источник


Ответы (2)


Хм, никогда не работал с emojistrings, но ваш код немного странный. Когда кнопка нажата, вы устанавливаете все кнопки на selected = false, затем вы устанавливаете sender.selected = !sender.selected (что означает, что sender.selected = true, при условии, что отправитель является одной из кнопок в buttonsNotSelected()). Затем вы проверяете, выбран ли sender, и если он выбран, вы снова устанавливаете его в значение true, а затем добавляете emojistring.

Что произойдет, если sender.selected = true? Что ж, вы установите его в false, используя buttonsNotSelected(), а затем инвертируете его и установите в true, хотя, вероятно, должно быть false (при условии, что sender является одной из кнопок в указанном методе). Не уверен, что это какая-то проблема, но мне кажется, что причина исчезновения смайликов в том, что .selected установлен неправильно.

Попробуйте немного почистить код

func buttonSelectedNot(){
    button1.selected = false
    button2.selected = false
    button3.selected = false
    button4.selected = false
    button5.selected = false
}

@IBAction func favoriteButtonAction(sender: UIButton) {

    // Save Data
    sender.selected  = !sender.selected;
    if (sender.selected) {
        emojiString = (sender.titleLabel?.text)!
        print(emojiString)

    } else {
        print("Not Selected");
    }

    // SET ALL BUTTONS, EXCEPT SENDER, TO FALSE

}
person ClockWise    schedule 01.03.2016
comment
О, я решил проблему. Нет проблем с выбранной кнопкой. Когда я выбираю кнопку, я активирую выбранное из отправителя. Я отвечу на свой вопрос :) все равно спасибо. - person jorjj; 01.03.2016

Я решил проблему. Проблема в том, что вам нужно установить цвет titlelabel для кнопки. Если вы этого не сделаете, он исчезнет.

Решенный код:

func buttonSelectedNot(){
        button1.selected = false
        button2.selected = false
        button3.selected = false
        button4.selected = false
        button5.selected = false
    }

    @IBAction func favoriteButtonAction(sender: UIButton) {

        // Save Data
        buttonSelectedNot()
        sender.selected  = !sender.selected;
        if (sender.selected)
        {
            sender.selected = true
            emojiString = (sender.titleLabel?.text)!

            **//need to set title color for the button.**
            sender.setTitleColor(UIColor.blackColor(), forState: .Selected)
            print(emojiString)

        }
        else
        {
            print("Not Selected");

        }
        sender.selected = true

    }

Снимок: введите здесь описание изображения

И выглядит идеально :D

person jorjj    schedule 01.03.2016