MeditationSettingsViewController
은 UISwitch
이며, Segue는 MeditationScreenViewController
입니다. UISwitch
은 phaselabel
레이블의 텍스트를 MeditationScreenViewController
에서 숨기지 않고 대신 MeditationSettingsViewController
화면을 표시합니다. 스위치가이 작업을 수행하지 않도록하려면 어떻게해야합니까? 스위치를 켜고 끌 때 phaselabel
을 숨기거나 숨기기를 취소 하시겠습니까?UISwitch가 켜기/끄기로 전환 할 때 레이블을 숨기거나 보이게 함을 설정합니다.
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
}
}
스위치를 켜기/끄기로 전환하여 다른 뷰 컨트롤러에서 phaselabel을 숨기거나 숨기기를 원하십니까? MeditationScreenViewController는 어떻게 화면에 표시됩니까? – aksh1t
네, 맞습니다. 팝업 창에서 취소를 클릭하면 표시됩니다. 팝업 창이 MeditationSettingsViewController에 연결됩니다. –
'MeditationSettingsViewController'의'phaselabel'에 (취약한) 참조를 가져와 숨김/숨기기를 할 수 있어야합니다. 이것을하기위한 또 다른 방법은'MeditationScreenViewController'가 스위치에 NSNotificationCenter 또는 위임을 사용하여 어떻게 든 들어서 듣고 토글 한 다음 거기에서 레이블을 숨기거나 숨기기를 해제하는 것입니다. 프로젝트의 구조를 알지 못해도 코드를 제공하기가 어렵습니다. – aksh1t