@IBAction func followUser(_ sender: Any) {
if followBtn.titleLabel?.text == "Follow"{
print("will follow")
} else if followBtn.titleLabel?.text == "Following"{
}
}
これを行うには良い方法がありますか?私はロード時に実行される関数を持っており、ユーザーがフォローされているかどうかをチェックし、ボタンのテキストを変更します。もちろん、ボタンが「フォロー」と表示されている場合は、「フォロー」と表示されているボタンとは異なる機能を持ちます。これが唯一の方法ですか?それは間違っていると感じる。ボタンを区別するためのより良い方法Swift?
func checkFollowing(){
let url = URL(string: "xxx")
//request to this file
var request = URLRequest(url: url!)
//method to pass data
request.httpMethod = "POST"
//body to be appended to url
let body = "id=\(user?["id"] as! String)&follower_id=\(imageID)"
request.httpBody = body.data(using: String.Encoding.utf8) //multi language support
//launching
URLSession.shared.dataTask(with: request, completionHandler: { (data:Data?, response:URLResponse?, error:Error?) in
if error == nil{
//communicate back to UI
DispatchQueue.main.async(execute: {
do{
//get json result
let json = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions .mutableContainers) as?
NSDictionary
//assign json to a new var parseJSON in guard secured way
guard let parseJSON = json else{
print("error while parsing")
return
}
if parseJSON["status"] as! String == "1"{
self.followBtn.setTitle("Following", for: .normal)
self.followBtn.backgroundColor = UIColor(red: 32, green: 113, blue: 165, alpha: 0.5)
} else if parseJSON["status"] as! String == "0"{
self.followBtn.setTitle("Follow", for: .normal)
}
} catch{
print("Caught an error: \(error)")
}
})
//if unable to proceed with request
} else{
print("error: \(error)")
}
//launch prepared session
}).resume()
}
フォロー/フォローを扱うデータソースがありますか? – Starlord
ユーザーがまだフォローしているかどうかを教えてくれるのはなぜボタンの仕事ですか?これは、ボタンがするべきことではありません。 – Alexander
ビューをデータ保存の方法として使用しないでください。ボタンのテキストを決定する関数は何ですか?それは良い出発点になるだろう。 –