[英]How do I persist a Facebook instance in multiple IOS view classes?
我已經很長時間以來一直是Stack Overflow的讀者,並期待參與! 關於這個問題...
我已經進行了大約10年的編程,但是對於iOS編程和Objective-C來說是全新的。
我正在嘗試構建需要Facebook登錄的應用程序。 當應用程序打開時,它需要加載帶有徽標和Facebook登錄按鈕的視圖。 我可以做到這一點,並使其毫無問題地工作。 當他們使用Facebook登錄后,我的應用程序將向我的服務器發送一個API調用,並通過我的系統對其進行身份驗證,並使用他們的系統權限發送回一個回調。 如果返回他們具有前進的正確權限,他們將被發送到帶有選項卡式界面的視圖。 我也有選項卡式界面工作。
我制作了一個FirstViewController來處理Facebook登錄按鈕,並為每個選項卡設置了視圖控制器。
在MyAppDelegate.m文件中將存在以下內容:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//init facebook & send initial view with login button
facebook = [[Facebook alloc] initWithAppId:@"MYAPPID"];
[self.window addSubview:FirstViewController.view];
[self.window makeKeyAndVisible];
//Code to check permissions from webserver
if (permissions && _isLoggedIn) {
// Add the tab bar controller's view to the window and display.
[self.window addSubview:tabBarController.view];
[self.window makeKeyAndVisible];
}
else //access denied view
return YES;
}
現在,我需要在FirstViewController中調用Facebook登錄方法...
[facebook authorize:nil delegate:self];
1)如何在MyAppDelegate中訪問它的Facebook實例? (我還需要能夠從所有其他視圖進行訪問。)是否創建了一個委托/協議以從MyAppDelegate訪問它?
2)我這樣做是一種非常愚蠢的方式嗎? 如果是這樣,請幫助業余iOS程序員走上正確的道路。
3)如何很好地利用Facebook方法中的“ delegate:”參數? 我不確定我是否很好理解。
謝謝,馬特
我從未使用過Facebook Objective-C API,但我可以為您提供一些關於設置對Facebook實例的全局訪問的見解。 您可以像這樣到達應用程序委托:
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
只要您具有訪問MyAppDelegate
的facebook
ivar / property的公共方法,就可以像這樣進行訪問:
Facebook *theFacebook = [appDelegate facebook];
只要在某處#import "MyAppDelegate.h"
這將不會給您任何警告。
至於-authorize:delegate:
看看Facebook.h 。 傳遞給該方法的委托對象應實現FBSessionDelegate
協議。
有關一般授權的更多信息,請查閱Apple關於此主題的文檔 。
編輯
在這里要明確指出,這是您應該放入MyAppDelegate.h
文件中的內容:
// MyAppDelegate.h
#import <UIKit/UIKit.h>
@class Facebook;
@interface MyAppDelegate : NSObject {
UIWindow *window;
UITabBarController *tabBarController;
Facebook *facebook;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;
@property (nonatomic, retain) Facebook *facebook;
@end
和MyAppDelegate.m
// MyAppDelegate.m
#import "MyAppDelegate.h"
#import "Facebook.h"
@implementation MyAppDelegate
@synthesize window;
@synthesize tabBarController;
@synthesize facebook;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
/*...your implementation here...*/
}
/*...more methods...*/
@end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.