2017-01-19 2 views
1

Я использую API Facebook для входа и выхода из системы.Как создать кнопку выхода в facebook в UITableViewCell в swift

В моем контроллере начального представления я поставил кнопку 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, если нажать эту кнопку.

Я есть ошибка в : Type LogOutTableViewCell does not conform to protocol FBSDKLoginButtonDelegate

Кто-нибудь знает, как исправить эту проблему? Или кто-нибудь знает другое решение для этого?

ответ

1

Проблема

ошибка говорит, что ваш LogOutTableViewCell не соответствует по протоколу FBSDKLoginButtonDelegate

Solution

Просто добавьте методов 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") 
} 

Update:

Потому что вы используете свой собственный @IBAction, вы, вероятно, не нужно FBSDKLoginButtonDelegate. Это, вероятно, достаточно просто позвонить FBSDKLoginManager().logOut() в вашем @IBAction, как это:

@IBAction func btnLogOutAction(_ sender: UIButton) { 
    print("clicked!") 
    FBSDKLoginManager().logOut() 
} 
+0

Где я могу добавить его? Я попробовал и получил еще одну ошибку: «Использование неразрешенного идентификатора loginButton (_: didCompleteWith: error:)' –

+0

обновил мой ответ @VictorMendes – ronatory

+0

Спасибо! У меня больше нет ошибки! –

Смежные вопросы