1

次のような変数を持つコントローラーが1つあります

NSString *str;

userId同じコントローラーで、 stringに割り当てていますstr

userIdユーザーデータを表示するには、別のコントローラーで上記が必要です。

userId別のコントローラーで値を取得するにはどうすればよいですか?

以下は私のコードです:

MainViewController.h

@property (nonatomatic) NSString *str;

MainViewController.m

@synthesize str;

str = 1;

今FirstViewController.hで

@property(nonatomatic, retain) MainViewController *mainCon;

FirstViewController.m

@synthesize mainCon;

NSLog(@"user id is %@", mainCon.str);

ここのログでは、null 値を取得しています。

4

4 に答える 4

2

あなたの最善の策は、[prepareForSegue] メソッドにあります

そのメソッド内で、私は通常次のようなものを持っています

if ([segue.identifier isEqualToString@"segueName"]){
    //I use this if statement to check which segue I am performing, if I have multiple
    //segues from a single view controller
    FirstVc *newViewController = segue.destinationViewController;
    newViewController.str = self.str;
}

これにより、文字列がメイン VC から新しい VC に渡されます。これはすべて、トランジションが Interface Builder またはセグエと識別子にアクセスできる何らかの方法でレイアウトされていることを前提としています。

于 2012-12-26T14:27:23.297 に答える
0

MainVC でプロパティを取得し、FirstVC から値を渡すと、うまくいきます。

次のコードは MainVC にある必要があります

@property (strong, nonatomic) NSString *str; 
@synthesize str;

FirstVCで

MainVC * vc = [[MainVC alloc]init];
vc.str = @"test";
于 2012-12-26T14:05:54.777 に答える
0

ステップ1:

定数としてviewcontroller クラスを作成する必要があります

ステップ2:

Constantクラスの.mファイルを削除できます

ステップ3:

Projectname_Prefix.pchにConstants.hをインポートする必要があります。これは、他のリソース フォルダーにある xcode になります。これで、Constant クラスがグローバル クラスとして機能します。

ステップ4:

これで、 Constants.hで変数を宣言できます。Constants.hで宣言された変数は、グローバル変数として機能します。どこからでもアクセスできます。

于 2012-12-26T14:22:37.640 に答える
0
SecondViewController *secondViewController = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
secondViewController.str1 = str;
[self.navigationController pushViewController:secondViewController animated:YES];

それはより迅速で簡単な解決策です。

于 2013-11-19T06:08:33.257 に答える