【问题标题】:Adding a UISwitch to a UINavigationItem将 UISwitch 添加到 UINavigationItem
【发布时间】:2013-04-04 20:07:48
【问题描述】:

我想在 UINavigationItem 的右上角有一个 UISwitch,而不是 UIBarButton。如果不继承 UINavigationItem,这是否可行?

【问题讨论】:

    标签: objective-c cocoa-touch uibarbuttonitem uinavigationitem uiswitch


    【解决方案1】:

    您可以使用initWithCustomView: 方法创建一个带有自定义视图的UIBarButtonItem。例如:

    UISwitch *switch = ...;
    UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:mySwitch];
    

    将此设置为UINavigationItem 上的左/右项。

    【讨论】:

      【解决方案2】:

      [UIBarButtonItem initWithCustomView:] 是可能的:

      UISwitch* switchView = [[UISwitch alloc] init];
      UIBarButtonItem* switchItem = [[UIBarButtonItem alloc] initWithCustomView:switchView];
      self.navigationItem.rightBarButtonItem = switchItem;
      

      【讨论】:

        【解决方案3】:

        在 Swift 中-

        在 viewDidLoad() 中编写这段代码

        let switchDemo=UISwitch(frame:CGRectMake(15, 15, 0, 0))
                switchDemo.on = true
                switchDemo.setOn(true, animated: false)
                switchDemo.addTarget(self, action: "switchValueDidChange:", forControlEvents: .ValueChanged)
                self.view.addSubview(switchDemo)
        

        这是你的功能 -

        func switchValueDidChange(sender:UISwitch!)
        {
        if (sender.on == true){
        println(“on”)
        }
        else{
        println(“off”)
        }
        }
        

        【讨论】:

          【解决方案4】:

          [UIBarButtonItem initWithCustomView:] 是可能的:

          self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView: mySwitch];
          

          【讨论】:

            【解决方案5】:

            对于 Swift 4:

            @IBOutlet weak var hostGuestSwitchOutletDeclare: UISwitch!
            private func loadHostGuestSwitch(){
                hostGuestSwitchOutletDeclare.isOn = true
                hostGuestSwitchOutletDeclare.setOn(true, animated: false)
                hostGuestSwitchOutletDeclare.addTarget(self, action: #selector(switchValueDidChange), for: .valueChanged)
                if self.hostGuestSwitchOutletDeclare.isOn {
                    self.navigationItem.title = "ON"
                } else {
                    self.navigationItem.title = "OFF"
                }
            }
            @objc func switchValueDidChange(sender:UISwitch!) {
                if (sender.isOn == true){
                    self.navigationItem.title = "ON"
                } else {
                    self.navigationItem.title = "OF"
                }
            }
            

            【讨论】:

              【解决方案6】:

              Swift 版本

              let customSwitch = UIBarButtonItem(customView: UISwitch())
              navigationItem.rightBarButtonItem = customSwitch
              

              在 viewDidLoad 中执行此操作

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2021-04-04
                • 2019-08-21
                • 2018-03-24
                • 1970-01-01
                相关资源
                最近更新 更多