Twitter登录按钮有问题

时间:2018-01-16 14:28:23

标签: ios objective-c iphone twitter

在我的iOS应用程序(Objective-C)中,我使用TWTRLogInButton对用户进行身份验证。

按照说明,我开始把它放在 viewcontroller.m

viewDidLoad
TWTRLogInButton *logInButton = [TWTRLogInButton buttonWithLogInCompletion:^(TWTRSession *session, NSError *error) {
///
}];
    logInButton.center = self.view.center;
    [self.view addSubview:logInButton];

有了所有其他配置,这样就可以了。

但是,为了更好地控制Twitter登录按钮的位置和大小,我想通过界面构建​​器添加该按钮。

所以,在我的 viewcontroller.h 中我添加了:

@property (retain, nonatomic) IBOutlet TWTRLogInButton *twitterButton;

在我的.xib上(是的,我知道)我添加了一个UIView,将其归类为" TWTRLogInButton"并将其连接到' twitterButton'

然后,在我的 viewcontroller.m 中,在viewDidLoad中,我做了

 self.twitterButton = [TWTRLogInButton buttonWithLogInCompletion:^(TWTRSession *session, NSError *error) {
    ///
    }];

但不知何故,当我点击按钮时,在Twitter Dialog被解雇后,不会调用完成。

是什么给出了?

1 个答案:

答案 0 :(得分:2)

它在Twitter Community forum中解释并且有意义(没有测试),但是我会在这里发布它以获得StackOverflow的答案。

您的按钮是这样声明的,并且在Storyboard / Xib中存在并连接:

@property (retain, nonatomic) IBOutlet TWTRLogInButton *twitterButton;

来自+(instancetype)buttonWithLogInCompletion:(TWTRLogInCompletion)completion的{​​{3}}(有+(instancetype))和文档说(我将粗体放入重要部分)

  

返回新登录按钮,在点击时启动Twitter登录   登录成功或失败时调用完成。

所以当你这样做时:

self.twitterButton = [TWTRLogInButton buttonWithLogInCompletion:^(TWTRSession *session, NSError *error) { 
    //Code for completionHandler
}];

您正在创建一个全新的对象并覆盖连接到您的xib / storyboard的前一个对象,您在代码与之前在xib / storyboard中设置的代码之间“失去了连接”。

如何修复它,按钮有一个要设置的属性,即完成处理程序。

@property (nonatomic, copy) TWTRLogInCompletion logInCompletion

所以设置它:

[self.twitterButton setLogInCompletion = ^(TWTRSession *session, NSError *error){
    //Code for completionHandler
}];