Изображение UIbutton не меняется - PullRequest
0 голосов
/ 04 февраля 2020

Я сделал навигацию, которая показывает название каждой ячейки, которую вы выбираете. Для первого экрана - перед выделением ячейки я хочу показать значок home . После выбора одной ячейки я хочу изменить значок.

let button = UIButton(frame: CGRect(x: 0, y: 0, width: 44, height: 44))
        breadcrumbsTitles.count <= 1 ? button.setImage(UIImage(named: "home_1x"), for: .normal) : button.setImage(UIImage(named: "arrow_left"), for: .normal)
        button.addTarget(self, action: #selector(backPressed), for: .touchUpInside)

//container for the bread crumb navigation 
container.addSubview(button)

breadcrumbsTitles содержит все ячейки / представления в моем контейнере:

public var breadcrumbsTitles: [String] {
        return self.viewControllers.map {
            $0.title ?? ""
        }
    }

breadcrumbsTitles.count

возвращает количество заголовков в навигационной системе. Почему моя кнопка не меняет свое изображение, когда выбрана одна ячейка? Я также пытался использовать оператор if-else , но он также не работает:

if breadcrumbsTitles.count <= 1{
button.setImage(UIImage(named: "home_1x"), for: .normal)
} else ... // set image to "arrow_left"

Почему мое изображение моей кнопки не меняется после выбора ячейки или чего-то еще?

1 Ответ

0 голосов
/ 04 февраля 2020

Ваш контейнер не готов к добавлению дополнительных представлений addSubview. Сначала вы можете исправить представление контейнера, а затем работать нормально.

  1. Я добавлен в viewDidLoad работает нормально и правильно

import UIKit

class ViewController: UIViewController {

    let breadcrumbsTitles = ["1","2","3"]

    override func viewDidLoad() {
        super.viewDidLoad()

        let button = UIButton(frame: CGRect(x: 0, y: 0, width: 44, height: 44))
        breadcrumbsTitles.count <= 1 ? button.setImage(UIImage(named: "default"), for: .normal) : button.setImage(UIImage(named: "arrow_left"), for: .normal)
        button.addTarget(self, action: #selector(btnPress), for: .touchUpInside)
        button.backgroundColor = UIColor.red
        self.view.addSubview(button)

    }


    @objc func btnPress() {


    }


}
...