Reputation: 2268
I'm trying to implement one simple thing - to switch the string value by switching UISwitch.
But, I can get, what is wrong
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)
}
I can show the whole code if necessary. I just taking data from Facebook, understand the gender if user, and the set the value interestedIn depending on his or her gender.
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)
}
})
}}
Upvotes: 0
Views: 537
Reputation: 2186
As @ILideTau mentioned above, you should not directly work with UISwitch states, instead of that, just create a Bool variable, that will hold your switch state, and update UI when you change its state in didSet { } closure:
@IBOutlet weak var interestedInSwitch: UISwitch!
var interstedInState: Bool = false {
didSet {
interestedInSwitch.on = interstedInState
}
}
func updateInterstedInState(newValue: Bool) {
interstedInState = newValue
}
Upvotes: 1