0

PersonName12 つのウィンドウ (どちらも同じクラス ファイルから制御されます) と、とという名前のグローバル変数を持つプログラムがWindow AありWindow Bます。2Window Aつのボタンがあります。1 つは次のとおりです。

-(IBAction)setPersonName:(id)sender
{
    PersonName1 = @"Tom";
}

そして、ウィンドウ A からウィンドウ B に変化するもう一方

ウィンドウ B には、次のことを行うボタンがあります。

- (IBAction)loadNames:(id)sender
{
    NSLog(@"%@",PersonName1);
}

問題は、画面が変わるたびに、ウィンドウ B のボタンをクリックすると、NSlog が"Tom"ではなく(null)を返すことです。これは何が原因ですか?

コメントからの詳細情報:

PersonName1メインの ViewController.h ファイルで次のように宣言されています。

NSString* PersonName1;

そのファイルのプロパティも同様です。

@property (nonatomic, retain) NSString *PersonName1;

これは、ViewController.m ファイルに合成されます。質問にリストされている両方の IBActions は、どちらも ViewController.m ファイルにあります。

4

2 に答える 2

0

あるView Controllerに値を別のView Controllerに渡さなかったと思います。

例: 最初のビュー コントローラー は、NSString *nameString としてグローバル値を持ちます。以下のように

@property (nonatomic, strong) NSString *PersonName1;

2番目のView Controllerには、 以下のように NSString *nameString としてグローバル文字列があります

@property (nonatomic, strong) NSString *PersonName1;

あるView Controllerに値を別のmean.doに渡したい場合は、以下のようにします

 SecoundViewController *SVC = [[SecoundViewController alloc]initWithNibName:@"nibName" bundle:nil]; 
SVC.PersonName1 = self.PersonName1;
 [self.navigationController pushViewController:SVC animated:YES];
于 2013-05-17T10:37:41.313 に答える
0

PersonName1 に値を割り当てるには、最初のウィンドウの最初のボタンをクリックする必要があるようです。最初のボタンをクリックせずに 2 番目のボタンをクリックした場合は、最初のボタンをクリックした場合にのみ PersonName1 の宣言が行われるため、null が返されます。

于 2013-05-17T09:33:11.630 に答える