iPhone:如何在我的UITabBarViewController和各个标签之间共享信息?

时间:2012-07-11 06:24:55

标签: iphone ipad ios5 uitabbarcontroller uistoryboardsegue

我有一个TableViewController,它被分成TabBarViewController

我知道如何通过segue传递我的对象,但不知道如TabBarViewController和它的标签共享之类的关系。

我该怎么做? 从TabView有没有办法访问TabBarViewControllers成员变量?

更新

到目前为止,这就是我解决问题的方法,但我并不是疯狂地使用AppDelegate来做这件事......

将以下内容添加到WhateverYouNamedYourAppDelegate.h

@class myObjectIWantToPass;
@property (strong, nonatomic) myObjectIWantToPass *object;

然后将以下内容添加到您要传递的数据的View Class文件中。如果您计划将对象传递到另一个视图,我将假设您已知道如何在此文件中设置对象。

WhateverYouNamedYourAppDelegate *appDelegate = 
(WhateverYouNamedYourAppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.object = object;

然后你做了一些类似的工作,从目标View Class中的appDelegate中检索对象。

WhateverYouNamedYourAppDelegate *appDelegate = (WhateverYouNamedYourAppDelegate *)[[UIApplication sharedApplication] delegate];
object = appDelegate.object;

2 个答案:

答案 0 :(得分:1)

您可以创建单例类,以便所有控制器都可以访问Singleton中的那些变量。见见下面的代码

SingletonClass.h

@interface SingletonClass : NSObject {
    NSString *someString;
}

@property(nonatomic, retain)NSString *someString;

+(id)shared;

@end

SingletonClass.m

#import "SingletonClass.h"

static SingletonClass *aShared;

@implementation LibShared
@synthesize someString;

+(id)shared
{
    if (aShared == nil) {
    aShared = [[self alloc] init];
    }
    return aShared;
}

-(id)init
{
   if (self = [super init]) {

   }
}

-(void)dealloc
{
  [someString releease];
  [super dealloc];
}

在标签栏中,您可以在SingletonClass上设置变量:

[[SingletonClass shared] setSomeString:@"Value_Set"];

在tableViewController上,您可以获取SingletonClass上someString变量的属性:

NSString *string =  [[SingletonClass shared] someString];

答案 1 :(得分:0)

这里不需要单身人士模式。相反,您可以像正常一样在- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender中向前发送数据对象,您只需要在UITabBarController的{​​{1}}属性中找到正确的viewController。

viewControllers