2012-07-25 114 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

我覺得你有更好的使用協議做

相關問題