2013-05-28 24 views
0

VC1.m在一個過程完成後包含以下代碼。BOOL在2個不同的視圖控制器中

if (self.iboard>0) { 
      countIsNil = TRUE; 
     } 

我想要另一個VC,比如說VC2.m包含下面的代碼。

- (void)viewDidLoad 
{ 
    if (countIsNil) 
    { 
     countIsNil = FALSE; 
     [email protected]"1"; 
     return; 

    } 
    [super viewDidLoad]; 
} 

我該如何構建/管理BOOL countIsNil以便它可以工作?我懷疑答案涉及使用靜態變量,但我沒有這樣的例子。

+1

這有幫助嗎? http://stackoverflow.com/a/9736559/1043198 –

+0

可能重複[從不同的視圖控制器訪問變量](http://stackoverflow.com/questions/11575749/accessing-variable-from-different-view-controllers) –

回答

2

解決辦法有兩個:

  1. 你需要做一個屬性這個變量。
  2. 你可以維護使用NSUserDefaults類。

例爲NSUserDefaults,寫在VC1:

[[NSUserDefaults standardUserDefaults]setBool:YES forKey:@"countIsNil"] 
    [[NSUserDefaults standardUserDefaults] synchronize]; 

寫在VC2:

- (void)viewDidLoad 
{ 
    if ([NSUserDefaults standardUserDefaults] valueForKey:@"countIsNil"]) 
    { 
     countIsNil = FALSE; 
     [email protected]"1"; 
     return; 
    } 
    [super viewDidLoad]; 
} 
+1

NSUserDefaults可能不是這裏的選項。如果您希望這些變量在應用程序啓動時保持不變,那麼這是非常有用的。改爲使用單例類,並在其中封裝變量。 –

+0

我能夠使NSUserDefaults方法工作後添加一個;第一行和第二行。但是,如果這不是一個好的選擇,那麼我需要更多地瞭解「解決方案」1或你的單身類「選項」。 「解決方案」1是否暗示以某種方式爲這個變量創建一個屬性會使它更容易「向前傳遞」?如果是這樣,那麼我需要在VC1中做出什麼樣的改變? – zerowords

-1

只要把你的布爾變量全局我的意思是說,把它在AppDelegate的文件中,設置它的屬性和綜合它, 現在你可以從任何類的這個變量中傳遞值,並從任何地方檢索它..這裏是例子:

// AppDelegate.h 
@interface AppDelegate : UIResponder <UIApplicationDelegate>{ 

    BOOL countIsNil; 
} 
@property(readwrite)BOOL countIsNil; 
@end 

// AppDelegate.m 
@implementation AppDelegate 
@synthesize countIsNil 
+1

將變量放入應用程序委託中是一種可怕的選擇,我不知道人們爲什麼推薦它。創建一個合適的單例並使用它。 –

+0

如果你想在多於一個視圖中使用該變量,那麼它非常有用,而且我還提到過,如果你想在單個類中使用這個變量,那麼你可以在任何類中使用該變量,那麼你可以直接通過它,而導航到下一個視圖.. –

相關問題