【问题标题】:I want use switch button by using that I want access oneViewController to secondViewController?我想通过使用我想访问 oneViewController 到 secondViewController 来使用切换按钮?
【发布时间】:2019-01-22 06:12:13
【问题描述】:

我想使用 UISwitch,当 isON 使用它应该在 ViewController1 isOFF 然后它必须去下一个 ViewController。有人可以帮我吗?

import Foundation
import Firebase
import FirebaseAuth


class HomeViewController: UIViewController {
    @IBOutlet weak var citiPostSwitch:UISwitch!

    @IBAction func switchToCitiPost (switchState: UISwitch){
        if citiPostSwitch.isOn{
            print("your in ViewConroller 1")
            citiPostSwitch.setOn(false, animated: true)

        } else{
            citiPostSwitch.setOn(true, animated: true)
            print("your in ViewController 2")
        }
    }

    @IBAction func logOutAction(sender: AnyObject) {
        if Auth.auth().currentUser != nil {
            do {
                try Auth.auth().signOut()
                let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SignUp")
                present(vc, animated: true, completion: nil)

            } catch let error as NSError {
                print(error.localizedDescription)
            }
        }
    }
}

【问题讨论】:

  • Apple 对他们提供的 UI 组件有特定的用例。开关应该用于打开或关闭某些东西,设置或不设置等。它不适合在视图控制器之间移动。为什么不使用按钮甚至 tabbarController?
  • 您是否希望在开关打开时显示视图控制器 1,而在开关关闭时显示视图控制器 2?我说的对吗?
  • @Magnas 是的,我们也可以使用这些,但我只想使用 switch 是可能的
  • @Sanjukta 是的,我在 homeViewController 中使用 Switch,当我使用开关时,它必须转到 homeNewViewController
  • @Ranjith iOS 是的,当然有可能,但我仍然不明白为什么。 Apple 的人机界面指南明确指出,您应该尽量不要以用户不期望的方式使用界面元素。切换视图控制器不是切换的工作。

标签: ios swift uiswitch


【解决方案1】:

在你的函数中,关闭你正在导航的这个和第二个控制器的开关。

@IBAction func switchToCitiPost (switchState: UISwitch){
    if citiPostSwitch.isOn {
        citiPostSwitch.setOn(false, animated: true)
        let vc = SecondViewController()
        vc.switch.setOn(false, animated: true)
        self.navigationController?.pushViewController(vc, animated: true)
    }
}

当您来到控制器时,您的开关将处于关闭状态。

class SecondViewController: UIViewController {

    @IBOutlet weak var `switch`: UISwitch!
    override func viewDidLoad() {
        super.viewDidLoad()

        self.switch.addTarget(self, action: #selector(self.switchAction(_:)), for: .valueChanged)
    }

    @objc func switchAction(_ switchState: UISwitch) {
        self.navigationController?.popViewController(animated: true)
    }    
}

在 SecondView Controller 中,在切换操作时,只需从 Controller 中关闭或弹出即可。 希望对你有帮助

【讨论】:

  • 嗨@Vijay谢谢你,但我得到的错误是1。'HomeNewViewController'类型的值没有成员'delegate' 2.'HomeNewViewController'类型的值没有成员'switch' 3.无法转换“HomeNewViewController”类型的值到预期的参数类型“UIViewController”
  • @RanjitiOS 我已经更新了答案,现在可以正常工作了
  • hi @ Vijay 谢谢,在 secondviewController 中出现错误:1 Use of undeclared type 'SetSwitchState' 你能帮帮我吗
猜你喜欢
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-05
  • 1970-01-01
  • 2020-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多