Все.
Я просматривал, пытаясь найти ответ. Что касается жизни, я знаю, что могу это понять, однако я борюсь.
Приведенный ниже код выполняется и передает 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?
Любые идеи высоко ценятся.
Спасибо.