Не удается обновить текст UILabel после закрытия UIViewController - PullRequest
0 голосов
/ 27 января 2019

Я представляю UIViewController поверх другого.Когда я отклоняю представленный UIViewController, возвращаюсь к текущему и пытаюсь обновить текст UILabel, он не обновляется.Я не знаю почему.Ниже customTimeViewController - мой представленный UIViewController.Когда на нее нажимают кнопку, моя функция ниже вызывается делегатом.Я пытаюсь обновить текст UILabel (targetTimeText), но он не обновляется.

Я пробовал layoutIfNeeded(), setNeedsLayout() и setNeedsDisplay().Ничего не помогло.

func selectedCustomTime(minutes: Int, seconds: Int) {
    customTimeViewController?.dismiss(animated: true, completion: nil)
    self.targetTimeText.text = GameTimeUtility.convertTimeToHumanReadable(time: minutes*60+seconds)
}

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Я решил это, ребята,

Я добавлял свою UILabel (targetTimeText) в код, вызывая метод addSubview (). После добавления, если я вызываю setNeedsLayout (), все работает. Пожалуйста, проверьте ниже

self.view.addSubview(targetTimeText)
view.setNeedsLayout()
0 голосов
/ 27 января 2019

В этой ситуации вы можете использовать протокол уведомлений или протокол делегата. Попробуйте этот код, который использует протокол и измените имя переменной или функции на ваш текущий код.

protocol MydataDelegate{
    func passingData(mystring: String)
}

Class SecondViewController: UIViewController{

    var mdataDelegate: MydataDelegate!

    func selectedCustomTime(minutes: Int, seconds: Int) {
        mdataDelegate.passingData(mystring: GameTimeUtility.convertTimeToHumanReadable(time: minutes*60+seconds))
        customTimeViewController?.dismiss(animated: true, completion: nil)
    }

}

Class FirstViewController: UIViewController,MydataDelegate{

    func openSecondVC(){

        // Mark: Try your code that open new viewcontroller but don't forget pass your delegate
        let mainStoryboard = UIStoryboard(name: "Storyboard", bundle: NSBundle.mainBundle())
        let vc = mainStoryboard.instantiateViewControllerWithIdentifier("SecondViewController") as! SecondViewController
        vc.mdataDelegate = self
        self.presentViewController(vc, animated: true, completion: nil)
    }

    func passingData(mystring: String){
        self.targetTimeText.text = mystring
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...