4

ここでスタックオーバーフローに関する質問を確認しましたが、同じ方法で実行しますが、それでもNULLを返します

最初のビューでは

firstviewcontroller.hiには

@property (nonatomic, copy) NSString *Astring;

最初のviewcontroller.mで

#import "SecondViewController.h"
...
@synthesize Astring = _Astring;
...

- (IBAction)filterSearch:(id)sender {
NSlog(@"%@",Astring)

      }

2番目のviewcontroller.mで

#import firstviewcontroller.h
...
...
FirstViewController *controller = [[FirstViewController alloc]initWithNibName:@"FirstViewController" bundle:nil];
 controller.Astring = @"YES";

基本的に、最初のviewcontrollerで変数を作成し、2番目のviewcontrollerで変数を2番目のビューに渡しますが、常にNULLを返します...

私の論理は間違っていますか、それとも何か他のものですか

4

1 に答える 1

0

これが問題です。実際に AString の文字列値を変更していますが、View Controller の新しいインスタンス上にあります。この行:FirstViewController *controller = [[FirstViewController alloc]initWithNibName:@"FirstViewController" bundle:nil];コントローラーの新しいインスタンスを作成しています。したがって、既存のコントローラのビュー コントローラには同じプロパティがあります。

次に行う必要があるのは、firstViewController のインスタンスを取得する方法を見つけることです。

secondViewController.h で、このプロパティを追加します。

#import "firstViewController.h"
 ...
@property (nonatomic, strong) firstViewController *firstController;

次に、secondViewController.m で、firstController を使用して文字列の変更を呼び出すだけで、目的のインスタンスが含まれます。私はそれが今このようなものであるべきだと信じています:

firstController.Astring = @"YES"

乾杯!

于 2012-12-04T16:14:33.253 に答える