Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Установите UILabel с другого контроллера представления Swift

Автор вопроса: A.SОтветов: 2

У меня есть сегментированный элемент управления в SettingsController.

Сегментированный элемент управления может отображать температуру в градусах Цельсия или Фаренгейта.

У меня есть mainViewController, где у меня есть метка температуры, которая отображает текущую температуру в градусах Цельсия.

При щелчке сегментированного элемента управления я хочу преобразовать температуру в соответствующую единицу и отобразить ее в mainViewController.

@IBOutlet weak var temperatureUnitSegmentedControl: UISegmentedControl!
var mainViewController : MainViewController?

@IBAction func temperatureSegmentedControlListener(sender: UISegmentedControl) {

        switch temperatureUnitSegmentedControl.selectedSegmentIndex
        {
        case 0:
            showTemperatureInCelsius()
        case 1:
            showTemperatureInFahrenheit()
        default:
            break;
        }
    }
    func showTemperatureInCelsius(){
        mainViewController?.setTempInCelsius()

    }
    func showTemperatureInFahrenheit(){
            mainViewController?.setTempInFahrenheit()
    }

В mainViewController я хочу выполнить преобразования и обновить метку температуры.

func setTempInCelsius(){
        temperatureLabel.text = "In Celsius"
        log?.debug("Temperature Celsius\(batteryTemperatureLabel.text)")
    }

    func setTempInFahrenheit(){
        temperatureLabel.text = "In Fahrenheit"
        log?.debug("Temperature Fahrenheit\(batteryTemperatureLabel.text)")
    }

Этот код не затрагивает функции в mainViewController, и значение метки не обновляется.

Любая помощь будет оценена. Спасибо

  • Для начала: где вы устанавливаете переменную mainViewController? Кроме того, я предполагаю, что первый блок кода, который вы показываете, находится в этом SettingsController? Я предполагаю, что вы просто никогда не устанавливаете переменную для нужного вам контроллера. О, и если это родитель, не забудьте сделать переменную weak, или вы столкнетесь с циклом сохранения. Gero 06.10.2016
  • Проверьте ссылку, это решит вашу проблему /5210535/ Joe 06.10.2016

iosswiftuisegmentedcontrol

Ответы

Ответ 1 · Ranjana Dangol

Вы можете использовать делегатов или протокол. нажмите здесь

если вам нужно обновить представления, вы можете использовать nsnotificationcenter Нажмите здесь

Ответ 2 · Sachin Amrale

Yoa может просто отправить действие на ваш целевой контроллер представления, чтобы установить такие значения, как UIApplication.sharedApplication().sendAction("setTempInCelsious", to: nil, from: nil, forEvent: nil)

Надеюсь это поможет.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы