【问题标题】:UISwitch is not working properlyUISwitch 无法正常工作
【发布时间】:2016-06-04 17:22:56
【问题描述】:

我正在尝试实现一件简单的事情——通过切换 UISwitch 来切换字符串值。

但是,我知道,有什么问题

        func switchIsChanged(interestedIn: UISwitch) {
            if interestedIn.on == true {
                print("UISwitch is ON")
            } else {
                print("UISwitch is OFF")
            }
        }

        if self.Gender.text == "male" {

            switchIsChanged(self.interestedIn)
  }

如有必要,我可以显示整个代码。我只是从 Facebook 获取数据,了解用户的性别,并根据他或她的性别设置兴趣值。

import UIKit
import FBSDKShareKit
import FirebaseDatabase
import FirebaseAuth
import Firebase

class Settings: UIViewController {

@IBOutlet weak var UserImage: UIImageView!
@IBOutlet weak var UserName: UILabel!
@IBOutlet weak var UserSurname: UILabel!
@IBOutlet weak var Gender: UILabel!
@IBOutlet weak var interestedIn: UISwitch!
@IBOutlet weak var GenderofInsterest: UILabel!

var pictureURL : String?
var interest = ""

override func viewDidLoad() {
    super.viewDidLoad()


    let paramets = ["fields": "email, first_name, last_name, picture.type(large), gender"]

    let graphRequest = FBSDKGraphRequest(graphPath: "me", parameters: paramets)

    graphRequest.startWithCompletionHandler({

        (connection, result, error) -> Void in

        if error != nil {
            print (error)
        }

        if let first_name = result["first_name"] as? String {

            self.UserName.text = first_name

        }

        if let last_name = result["last_name"] as? String {

            self.UserSurname.text = last_name

        }

        if let picture = result["picture"] as? NSDictionary, data = picture["data"] as? NSDictionary, pictureUrl = data["url"] as? String {

            self.pictureURL = pictureUrl

            let fbUrl = NSURL(string: pictureUrl)

            if let picData = NSData(contentsOfURL: fbUrl!) {
                self.UserImage.image = UIImage(data: picData)
            }

        }

        if let gender = result["gender"] as? String {

            self.Gender.text = gender

        }


        let people = ProfileClass()

        people.profileName = self.UserName.text
        people.profileGender = self.Gender.text
        people.profileSurname = self.UserSurname.text
        people.profilePhotoUrl = self.pictureURL
        people.SaveUser()


        func switchIsChanged(interestedIn: UISwitch) {
            if interestedIn.on == true {
                print("UISwitch is ON")
            } else {
                print("UISwitch is OFF")
            }
        }



        if self.Gender.text == "male" {

            switchIsChanged(self.interestedIn)

        }


    })



}}

【问题讨论】:

  • 我想你想要的是一个Bool,它可以是真的也可以是假的。 UISwitch 是一个实际的 GUI 开关。
  • @ILkeTau 对不起,我没有得到 U。UISwitch.on 返回布尔值。正如我发现的那样,实际上没有必要使用 UISwitch.on == true。

标签: ios swift uiswitch


【解决方案1】:

正如上面提到的@ILideTau,您不应该直接使用 UISwitch 状态,而是创建一个 Bool 变量,它将保存您的开关状态,并在您在 didSet { } 闭包中更改其状态时更新 UI:

@IBOutlet weak var interestedInSwitch: UISwitch!

var interstedInState: Bool = false {
    didSet {
        interestedInSwitch.on = interstedInState
    }
}
func updateInterstedInState(newValue: Bool) {
  interstedInState = newValue
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-10
    • 2016-12-01
    • 1970-01-01
    • 2016-09-01
    • 2012-07-11
    • 2018-04-08
    • 2017-04-20
    • 2018-10-02
    相关资源
    最近更新 更多