在视图控制器和标签栏控制器之间传递数据

时间:2015-04-23 12:32:51

标签: ios xcode facebook cocoa-touch

我在dashBoardViewController.m

中有这个方法
   - (void)demoSetup
    {
        self.tabBar.tintColor = [UIColor colorWithRed:(160/255.0) green:(97/255.0) blue:(5/255.0) alpha:1]; // set the tab bar tint color to something cool.

        self.delegate = self;   // Just to demo that delegate methods are being called.


    }


    #pragma UITabBarController Delegate
    - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
    {
        NSLog(@"UITabBarDelegate: shouldSelectViewController...");
        return YES;
    }

    - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
    {
        NSLog(@"UITabBarDelegate: didSelectViewController...");
    }

    - (void)tabBarController:(UITabBarController *)tabBarController willBeginCustomizingViewControllers:(NSArray *)viewControllers
    {
        NSLog(@"UITabBarDelegate: willBeginCustomizingViewControllers...");
    }

    - (void)tabBarController:(UITabBarController *)tabBarController willEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed
    {
        NSLog(@"UITabBarDelegate: willEndCustomizingViewControllers...");
    }

    - (void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed
    {
        NSLog(@"UITabBarDelegate: didEndCustomizingViewControllers...");
    }

我有4个链接,并有Facebook登录视图 我需要从包含Facebook登录2数据(FBID,FBUSER)的视图传递到我的dashBoardViewController,并从它传递相同的数据到我的所有选项卡,是否可能?

这是dashBoardViewController.h

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

@interface dashBoardViewController : BFPaperTabBarController <UITabBarControllerDelegate,FBLoginViewDelegate> 

@property (weak, nonatomic) IBOutlet FBLoginView *loginButton;

@property (retain, nonatomic) NSString *id;

@property (retain, nonatomic) NSString *first_name;


@end

2 个答案:

答案 0 :(得分:0)

在所需的viewcontroller类中创建FBID,FBUSER属性。然后编写一个方法在视图控制器类中创建视图控制器的共享实例

+ (instancetype)sharedInstance {
static MyViewController *instance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
    instance = [[self alloc] init];
});
return instance;

}

此方法将返回MyViewController类的共享实例。这是一个静态对象。

MyViewController *myViewController = [MyViewController sharedInstance];

将您的属性设置为myViewController.fbid = yourvalue或myViewController.first_name = yourvalue

您必须在所有视图控制器中实现此共享实例方法。这样您就可以创建静态对象并将非静态属性设置为静态

答案 1 :(得分:0)

这是我对视图控制器设置的理解。                         ----- FaceBook登录VC                        | - &GT; TabBarController - | ----- VC1                        |                        | ------ VC2                        |                         ------ VC3

如果图表看起来正确并且您尝试在FaceBookLogin和VC -1,V-2和VC -3之间传递数据。

您可以通过创建TabBar Controller的子类来完成此操作。在您的子类中,为FBID和FBUSER声明两个属性。 如果使用成功登录使用&#34; FaceBook登录&#34;页面,然后在自定义tabBar控制器中设置这些属性。

您现在可以从任何属于Tabbar控制器的VC访问这些属性。

如果您需要查看某些代码或需要更详细的说明,请与我们联系。