2012-07-25 80 views

回答

0

通过引入自动引用的与iOS 5计数,这迫使特定的编程规则和限制,某些编程结构和公认的做法是不再可能。 extern的使用是链接器不满意的基于C的指令之一。事实上,如果您尝试使用启用了ARC的功能,您会遇到链接错误。

但是,iOS 5仍然可以使用全局变量,您只需使用#define指令即可。

以下步骤演示了使用全局变量的一种可能解决方案。


1)定义一个局部变量:

NSString * gvar; 
    @interface AppDelegate : UIResponder <UIApplicationDelegate> 

2)初始化全局变量:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 
    gvar = [[NSString alloc] initWithString:@"Name1"]; 
    return YES; 
} 

3)导入在此的AppDelegate文件BOT h你的ViewControllers。


4)分配GVAR到的UILabel在你的第一个视图控制器:

gvar = [self.songArray objectAtIndex:indexPath.row]; 

一旦你:

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    self.label.text= gvar; 
} 

5)从你的第二个视图控制器改变其值回到之前的viewController,你的labe我会展示新的文字。

+0

我正在试图用UILabel来做到这一点。它不断告诉给我和错误。我不确定为什么这不起作用 - 这对我有意义。 – 2015-06-23 04:20:14

0

有多种方法可以做到这一点。不过,您可以更具体地说出您的问题。

您可以让您的标签可以被其他视图控制器访问。这样做,您需要知道从哪里访问标签的拥有视图控制器。

您可以在UIApplicationDelegate的子类中存储对标签的引用,并使用[[UIApplication getSharedApplication]委托]访问该标签并从任何地方访问它。如果你这样做,不要忘记在标签被销毁时不要忘记该参考。但是,如果不知道你想达到什么以及为什么,我不能说这是否是可取的,使得从其视图控制器外部可访问的UILable对象。很可能它不是。

1

定义和在AppDelegate中

创建其财产或Alloc的UILabel

现在使用该标签在任何地方ü要在整个应用程序

AppDelegate *objAppDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
[self.view addSubView:objAppDelegate.label] // your gobal label added 

更改其文本的任何地方

[objAppDelegate.label setText:@"New Text"]; 
0

一)将指向标签的指针传递给控制器​​B并使用它来更改文本。

b)定义一个协议并在控制器B中定义一个委托成员。在控制器A(拥有标签)中实现委托方法并设置作为委托方法参数传递的文本。调用控制器B中的委托方法,并将要设置的文本传递给标签。

c)注册控制器A作为某些通知的观察者。在控制器B 中发布通知并向用户信息字典添加文本。在控制器A中实现一个方法,该方法接收通知并设置用户信息字典中传递的文本。

b)大部分时间是最合理的。 a)不干净。 c)是一种矫枉过正。

-1

我觉得你有更好的使用协议做

相关问题