FBLogin从UIView分配代表

时间:2014-03-14 21:22:56

标签: ios objective-c delegation

我有一个FBLogin(Facebook SDK)按钮,我在一个视图中使用的按钮被复制到我的许多视图控制器中。我似乎无法将UIView设置为Facebook SDK的委托,因此我尝试创建一个单独的ViewController来处理Facebook SDK的委托功能。

标题文件:

#import <UIKit/UIKit.h>
#import <FacebookSDK/FacebookSDK.h>

@class AppDelegate, FBDelegateViewController;
@interface UserView : UIView {

    AppDelegate *appDelegate;

    IBOutlet UIView *contentView;
    IBOutlet UIImageView *userImage;
    IBOutlet UILabel *firstName;
    FBDelegateViewController *fbDelegate;
    IBOutlet FBLoginView *FacebookLogin;

}

@property (nonatomic, strong) IBOutlet UIView *contentView;
@property (nonatomic, strong) IBOutlet UILabel *firstName;
@property (nonatomic, strong) AppDelegate *appDelegate;
@property (nonatomic, strong) FBDelegateViewController *fbDelegate;

目前在我的实施中,我正在执行以下操作:

#import "UserView.h"
#import "AppDelegate.h"
#import "FBDelegateViewController.h"
#import <FacebookSDK/FacebookSDK.h>

@implementation UserView

@synthesize contentView, firstName, appDelegate, fbDelegate;

- (void)awakeFromNib {

    fbDelegate = [[FBDelegateViewController alloc] init];
    appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

    [[NSBundle mainBundle] loadNibNamed:@"UserView" owner:self options:nil];
    [self addSubview:self.contentView];
    [userImage.layer setCornerRadius:21.5];

    [FacebookLogin setDelegate:fbDelegate];

}

@end

应用程序崩溃时出现以下情况:

* * 由于未捕获的异常终止应用程序&#39; NSInvalidArgumentException&#39;,原因:&#39; - [UIView setDelegate:]:无法识别的选择器发送到实例0xa5e4f80&#39; *

在界面构建器中,设置包含FBLogin项的UIView。

我也尝试使用UIView进行授权,但看起来UIView不能成为FBLogin的委托?

对不起,这里有新的领域。通常使用关联的视图控制器作为委托 - 但希望了解外部委派。

1 个答案:

答案 0 :(得分:0)

  

似乎我不能将UIView设置为Facebook SDK的委托,所以我   我正在尝试创建一个单独的ViewController来处理委托   Facebook SDK的功能。

这个假设是错误的,任何NSObject都可以设置为委托,只要它实现FBLoginViewDelegate协议

这可以这样做:

@interface UserView : UIView <FBLoginViewDelegate> {

执行此操作后,您可以将此视图设置为委托!