簡體   English   中英

如何在多個IOS視圖類中保留Facebook實例?

[英]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];

只要您具有訪問MyAppDelegatefacebook 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM