我使用Facebook API登录和退出。
在我的初始视图控制器中,我为登录设置了一个facebook按钮,它有效。
import UIKit
import FBSDKLoginKit
class SignInViewController: UIViewController, FBSDKLoginButtonDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let facebookLoginButton = FBSDKLoginButton()
view.addSubview(facebookLoginButton)
facebookLoginButton.frame = CGRect(x: 16, y: 50, width: view.frame.width - 32, height: 50)
facebookLoginButton.delegate = self
}
func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) {
print("Log out!")
}
func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
if error != nil {
print(error)
}
print("Success!")
let mainStoryboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let desController = mainStoryboard.instantiateViewController(withIdentifier: "SWRevealViewController") as! SWRevealViewController
self.present(desController, animated: true, completion: nil)
}
}
在此之后,我为应用菜单创建了UITableViewController
在这个菜单中,我创建了一个UITableViewCell
并放了一个按钮。
import UIKit
import FBSDKLoginKit
class LogOutTableViewCell: UITableViewCell, FBSDKLoginButtonDelegate {
@IBOutlet weak var btnLogOut: UIButton!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
@IBAction func btnLogOutAction(_ sender: UIButton) {
print("clicked!")
}
func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) {
print("LogOut!")
}
}
点击此按钮,我想登录facebook。
我在LogOutTableViewCell
:Type LogOutTableViewCell does not conform to protocol FBSDKLoginButtonDelegate
有谁知道我如何解决这个问题?或者有人知道另一种解决方案吗?
答案 0 :(得分:1)
<强>问题强>
错误表明你的LogOutTableViewCell不符合Protocol FBSDKLoginButtonDelegate
<强>解决方案强>
只需将方法loginButton(_:didCompleteWith:error:)
和loginButtonDidLogOut(_:)
添加到LogOutTableViewCell,即可符合协议。在您的情况下,您可以将其留空,因为您在SignInViewController中进行登录。
func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
// just leave it empty
}
func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) {
print("did logout of facebook")
}
<强>更新强>
因为您使用自己的@IBAction
,所以可能不需要FBSDKLoginButtonDelegate
。只需在您的FBSDKLoginManager().logOut()
中拨打@IBAction
就可以了:
@IBAction func btnLogOutAction(_ sender: UIButton) {
print("clicked!")
FBSDKLoginManager().logOut()
}