0

ビューコントローラー1からビューコントローラー2、次にビューコントローラー3に転送すると、NSStringデータが失われます。ただし、ビューコントローラー1からビューコントローラー3に転送すると機能します。したがって、viewcontroller 1 から view controller 2 に切り替える方法により、何らかの理由で nsstring データが失われます。以下にコードを掲載しますが、View Controller 2 で何かを行う必要があると思います。

ビューコントローラー1

-(void)button{
    stringEntered=textField.text;
    ViewController2 *vc2 = [[ViewController3 alloc] init];
    vc2.string = [[NSString stringWithString:textField.text] retain];

    [self.navigationController pushViewController:vc2 animated:YES]; 
}

ビューコントローラー 2

-(void)button{
    ViewController3 *vc3 = [[ViewController3 alloc] init];
    [self.navigationController pushViewController:vc3 animated:YES];
}

ビューコントローラー3

NSString *emailBody = [NSString stringWithFormat:@"%@",string];
4

2 に答える 2

0

viewcontroller 3 .hファイルで、行の下に書き込みます

@property(retain,nonatomic)NSString *string;

.mファイルに合成します

@synthesize string;

ビューコントローラー2になりました

-(void)button{
    ViewController3 *vc3 = [[ViewController3 alloc] init];
vc3.string =string;
    [self.navigationController pushViewController:vc3 animated:YES];
}

vc2 で文字列を正しく定義していることを確認してください。

于 2013-08-29T07:13:00.197 に答える
0

Macro.h ファイルを作成し、このように AppDelegate var を作成できます

extern AppDelegate *デリゲート;

AppDelegate では、このように宣言します

AppDelegate *デリゲート;

そして appdelegate:DidfinishlaunchingwithOptions:

このようにする

delegate = [[UIApplciaiton sharedApplication]delegate];

appdelegate で NSString *string を 1 つ宣言し、iVar とプロパティを作成し、それを合成してコピー型のプロパティにし、

ビューコントローラー1で

assign delegate.string = @"";

ビューコントローラーでは、次のようにアクセスできます

NSString *string1 = delegate.string;

viewcontroller1 または viewcontroller2 にデリゲートが見つからないというエラーが発生した場合は、viewcontroller1 および viewcontroller2 に appdelegate および macro.h ファイルをインポートします。

乾杯:)

于 2013-08-29T06:46:55.033 に答える