UISwitch Throwing Fault Swift - PullRequest
       43

UISwitch Throwing Fault Swift

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

Все.

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

Приведенный ниже код выполняется и передает changeURL другому контроллеру представления. Эта переменная changeURL установлена ​​в оператор if, где true добавляет одну строку к URL, а false добавляет другую.

API работает нормально. Все работает как надо.

Однако, когда я загружаю начальный вид под UISwitch уже включен. Я нажимаю ввод и получаю представление таблицы возврата, заполненное содержимым.

import UIKit

class DashboardViewController: UIViewController {

    @IBOutlet weak var warningLabel: UILabel!
    @IBOutlet weak var clickToEnterButton: UIButton!
    @IBOutlet weak var explicitSwitch: UISwitch!

    //    @IBAction func urlSwitch(_ sender: UISwitch) {
    //        performSegue(withIdentifier: "goToTableView", sender: explicitSwitch)
    //    }
    @IBAction func enterButton(_ sender: UIButton) {
        performSegue(withIdentifier: "goToTableView", sender: clickToEnterButton)

    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.destination is JokesTableViewController {
            let vc = segue.destination as? JokesTableViewController
            vc?.changeURL = explicitSwitch.isOn
        }
    }
}

Если я затем переключаю переключатель UIS в положение «выкл», это вызывает ошибку.

'invalid mode 'kCFRunLoopCommonModes' provided to CFRunLoopRunSpecific - break on _CFRunLoopError_RunCalledWithInvalidMode to debug. This message will only appear once per execution.'

Я знаю, что коммутатор работает, потому что, если я установлю переключатель в положение false после доступа к представлению и затем снова нажму на ввод, это предоставит мне второй API - код ниже.

import UIKit

class DashboardViewController: UIViewController {

    @IBOutlet weak var warningLabel: UILabel!
    @IBOutlet weak var clickToEnterButton: UIButton!
    @IBOutlet weak var explicitSwitch: UISwitch!

    //    @IBAction func urlSwitch(_ sender: UISwitch) {
    //        performSegue(withIdentifier: "goToTableView", sender: explicitSwitch)
    //    }
    @IBAction func enterButton(_ sender: UIButton) {
        performSegue(withIdentifier: "goToTableView", sender: clickToEnterButton)

    }

    func explicitSwitchOff(){
        explicitSwitch.setOn(false, animated: true)
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.destination is JokesTableViewController {
            let vc = segue.destination as? JokesTableViewController
            vc?.changeURL = explicitSwitch.isOn
            explicitSwitchOff()
        }
    }
}

В идеале, я думаю, мне нужно отделить значение переключателя (true или false) от действия UISwitch. Затем присоедините его к действию UIButton?

Любые идеи высоко ценятся.

Спасибо.

1 Ответ

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

Спасибо, я нашел ответ.

Оказывается, переключатель UIS все еще был объявлен для переменной, которой там не было!

Извлеченный урок.

...