2011-11-18 97 views
0

可能重複:
Passing Data between View ControllersiOS dev - 如何將字符串obj從一個類傳遞給另一個類?

我有兩個視圖控制器,我想從我的應用程序的一個視圖的一些信息。例如:

在我的應用程序中,我從第一頁走到第二頁。根據用戶按下的按鈕,我想更改第二個屏幕上的信息。什麼是最快和最簡單的方法來做到這一點?我嘗試導入類和重建,但重新創建字符串obj,並不保留我想要的信息。

+0

這一直在http://stackoverflow.com/search之前問及回答?q = ios + pass + value + view –

+0

不是重複的,但超級有用的鏈接謝謝! – theCodeMonsters

回答

1

在您的第二個(「孩子」)視圖控制器中,保留該字符串的property(請參閱第9節)。

當您實例化第二個視圖控制器並從第一個視圖控制器將其壓入堆棧之前,請設置字符串屬性的值,保持第一控制器的串:

mySecondViewController.infoString = myFirstViewController.infoString; 

確保您的第二視圖控制器管理該字符串的存儲器(通常在控制器的dealloc方法的release消息,假設你的屬性與一個retain定義)。

第二個選項是將屬性保留在應用程序委託或管理應用程序數據的另一個單例中。但第一種方法更輕量一些。

+0

代碼中的外觀如何? – theCodeMonsters

+0

閱讀關於屬性的鏈接。該鏈接包含解釋如何在您的課堂中設置屬性的代碼片段。然後,只需要設置該屬性,通常在創建第二個視圖控制器之後並將其推入導航堆棧之前。 –

+0

很酷,但我仍然有點迷路。我試着設置一個屬性,但是如何在沒有在其他視圖控制器中創建它的情況下訪問它?因此重新創建String obj。 – theCodeMonsters

1

那麼有(至少)兩種可能性:

  • 一個屬性添加到下一個視圖控制器,做一些像
NewVC *vc = [[NewVC alloc] init]; // or initWithNibName... 
[vc setMyInformation:information]; 
  • 創建自定義init方法:
NewVC *vc = [[NewVC alloc] initWithMyInformation:information andNibName:@"nibName" bundle:nil]; // well you should get the point... 
0

如果我理解正確的話,你需要的是創造VC2一個實例變量。然後,當您從vc1創建vc2實例時,您可以在呈現vc2之前訪問該iVar以分配值等。這裏有一個例子:

在ViewController2.h文件:

@interface ViewController2 
{ 
    NSString *string2; //create an instance variable 
} 

@property (nonatomic, retain) NSString *string2; 

在ViewController2.m文件:

@implementation ViewController2 
@synthesize string2; 

在ViewController1.m文件:

@implementation ViewController1 

//ViewController2 *viewController2 = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil]; //one way to instantiate 

viewController2.string2 = @"whatever string"; //here you assign the value to the instance variable string2 in viewController2 



//[self.navigationController pushViewController:childController animated:YES]; //etc. it depend on how you present viewcontroller2 
+0

雖然我希望我可以使用這個,即使我輸入它,它一直說沒有找到該屬性。 – theCodeMonsters

+0

也許把你的項目放在一邊,並在一個演示測試應用程序上工作,這樣你就可以踢輪胎和學習屬性。 –

相關問題