UILabel не меняет своей стоимости - PullRequest
0 голосов
/ 23 апреля 2020

Я делаю простое упражнение из книги «Разработка приложений со Swift: навигация и рабочие процессы», но не понимаю, почему этот код не работает, а текст метки не меняется:

import UIKit

class MiddleViewController: UIViewController {

    @IBOutlet var happened: UILabel!
    var eventNumber = 1

    override func viewDidLoad() {
        super.viewDidLoad()

        if let existingText = happened.text {
            happened.text = "\(existingText) \n Event number \(eventNumber) was viewDidLoad"
            eventNumber += 1
        }
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        if let existingText = happened.text {
            happened.text = "\(existingText) 1"
            eventNumber += 1
        }

    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        if let existingText = happened.text {
            happened.text = "\(existingText)\nEvent number \(eventNumber) was viewDidAppear"
            eventNumber += 1
        }

    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)

        if let existingText = happened.text {
            happened.text = "\(existingText)\nEvent number \(eventNumber) was viewWillDisappear"
            eventNumber += 1
        }

    }

    override func viewDidDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)

        if let existingText = happened.text {
            happened.text = "\(existingText)\nEvent number \(eventNumber) was viewDidDisappear"
            eventNumber += 1
        }

    }

}

Событие если я переключаю контроллеры представления, текст метки не изменяется.

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

"(существующий текст) \ nСобытие номера (eventNumber) было viewWillDisappear"

Поскольку в вышеприведенном тексте вы использовали "\ n", поэтому он отображает текст в следующей строке метки. Пожалуйста, проверьте numberOfLines вашей метки , Если его 1, то он не будет отображаться, потому что текст находится во второй строке

0 голосов
/ 23 апреля 2020

Вам необходимо добавить

happened.numberOfLines = 0

в ваш viewDidLoad (). Это гарантирует, что UILabel может иметь несколько строк текста.

Код в viewDidLoad ():

override func viewDidLoad() {
    super.viewDidLoad()

    happened.numberOfLines = 0

    if let existingText = happened.text {
        happened.text = "\(existingText) \n Event number \(eventNumber) was viewDidLoad"
        eventNumber += 1
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...