MeditationSettingsViewController
hat eine UISwitch
, die mit MeditationScreenViewController
über eine Segue verbunden ist. Die UISwitch
versteckt nicht den Text in der Bezeichnung phaselabel
von MeditationScreenViewController
, sondern zeigt stattdessen den Bildschirm MeditationSettingsViewController
an. Wie bekomme ich es, dass der Switch das nicht tut, aber phaselabel
ein- und ausblendet, wenn der Schalter ein-/ausgeschaltet wird?Einen UISwitch ein-/ausblenden lassen, wenn er ein-/ausgeschaltet wird
class MeditationSettingsViewController: UIViewController {
@IBAction func showCycleTitleChanged(_ sender: UISwitch) {
if (sender.isOn == true)
{
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "segue" {
if let sendToDetailViewController = segue.destination as? MeditationScreenViewController {
sendToDetailViewController.isSwitchOn = sender!.isOn
}
}
class MeditationScreenViewController: UIViewController {
override func viewWillAppear(_ animated: Bool) {
if isSwitchOn == true {
//unhide the label
self.phaseLabel.isHidden = true
//set your label value here
}
else {
self.phaseLabel.isHidden = false
}
}
Nur um klar zu sein, möchten Sie den Schalter ein-/ausschalten, um die Phasenbezeichnung in einem anderen View-Controller ein-/auszublenden, nicht wahr? Wie wird der MeditationScreenViewController auf dem Bildschirm angezeigt? – aksh1t
Ja, das stimmt. Es wird durch Klicken auf Abbrechen in einem Popup-Fenster angezeigt. Das Popup-Fenster ist mit dem MeditationSettingsViewController verbunden. –
Sie müssen irgendwie eine (schwache) Referenz auf die 'Phasenmarkierung' in' MeditationSettingsViewController' erhalten, damit Sie sie ein- und ausblenden können. Eine andere Möglichkeit wäre, den "MeditationScreenViewController" irgendwie (durch die Verwendung von NSNotificationCenter oder Delegierung) auf den Schalter hin und her schalten zu lassen und dann die Beschriftung dort ein-/auszublenden. Es ist schwierig für mich, Code zu geben, ohne die Struktur Ihres Projekts zu kennen. – aksh1t