我有一个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的委托?
对不起,这里有新的领域。通常使用关联的视图控制器作为委托 - 但希望了解外部委派。
答案 0 :(得分:0)
似乎我不能将UIView设置为Facebook SDK的委托,所以我 我正在尝试创建一个单独的ViewController来处理委托 Facebook SDK的功能。
这个假设是错误的,任何NSObject都可以设置为委托,只要它实现FBLoginViewDelegate
协议
这可以这样做:
@interface UserView : UIView <FBLoginViewDelegate> {
执行此操作后,您可以将此视图设置为委托!