使用Storyboard的Twitter iOS登录按钮?

时间:2016-04-02 19:30:15

标签: ios twitter-fabric

我已经使用Fabric将TwitterKit导入到我的Swift XCode项目中。我想使用UIView创建Twitter登录按钮,这样我就可以在故事板中进行布局。

这就是我所做的:

1)我在故事板中创建了一个UIView,并将该类设置为TWTRLogInButtonTWTRLogInButton Class

2)在我的视图控制器中,我创建了一个IBOutlet。

@IBOutlet var twitterLoginView: TWTRLogInButton!

3)我已经修改了Fabric中的示例代码以适应我的设置。这是Fabric viewDidLoad()中的原始代码:

        let logInButton = TWTRLogInButton { (session, error) in
        if let unwrappedSession = session {
            let alert = UIAlertController(title: "Logged In",
                message: "User \(unwrappedSession.userName) has logged in",
                preferredStyle: UIAlertControllerStyle.Alert
            )
            alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
            self.presentViewController(alert, animated: true, completion: nil)
        } else {
            NSLog("Login error: %@", error!.localizedDescription);
        }
    }

    // TODO: Change where the log in button is positioned in your view
    logInButton.center = self.view.center
    self.view.addSubview(logInButton)

这是我编辑的代码,用于引用我的观点:

twitterLoginView = TWTRLogInButton { (session, error) in
        if let unwrappedSession = session {
            let alert = UIAlertController(title: "Logged In",
                message: "User \(unwrappedSession.userName) has logged in",
                preferredStyle: UIAlertControllerStyle.Alert
            )
            alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
            self.presentViewController(alert, animated: true, completion: nil)
        } else {
            print("Login Error, \(error?.localizedDescription)")
        }
    }

XCode接受这个,但是当我启动应用程序时,当我选择Twitter登录按钮时,我在日志中收到以下错误:

  

TWTRLogInButton是在没有completionBlock set

的情况下创建的

我不确定为什么会这样,有人有任何想法吗?

1 个答案:

答案 0 :(得分:1)

buttonWithLogInCompletion是类方法。您正在故事板中创建IBOutlet而无需调用实例方法。覆盖它会发出警告。你的代码顺便说一下。如果您不想看到该警告,则应按照您在问题中所写的方式以编程方式在代码中创建按钮:

    let logInButton = TWTRLogInButton { (session, error) in
    if let unwrappedSession = session {
        let alert = UIAlertController(title: "Logged In",
            message: "User \(unwrappedSession.userName) has logged in",
            preferredStyle: UIAlertControllerStyle.Alert
        )
        alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
        self.presentViewController(alert, animated: true, completion: nil)
    } else {
        NSLog("Login error: %@", error!.localizedDescription);
    }
}

// TODO: Change where the log in button is positioned in your view
logInButton.center = self.view.center
self.view.addSubview(logInButton)

您也可以在代码中使用自动布局设置按钮位置。