0

当我从视图控制器 1 传输到视图控制器 2 再到视图控制器 3 时,我的 NSString 数据丢失了。但是,当我从视图控制器 1 传输到视图控制器 3 时,它可以工作。因此,我从视图控制器 1 切换到视图控制器 2 的方式导致我由于某种原因丢失了 nsstring 数据。我将在下面发布我的代码,但我猜我需要在视图控制器 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

您可以像这样创建一个 Macro.h 文件并创建 AppDelegate var

外部 AppDelegate *委托;

在 AppDelegate 中这样声明

AppDelegate *委托;

并在 appdelegate:DidfinishlaunchingwithOptions:

这样做

委托= [[UIApplciaiton sharedApplication]委托];

然后在 appdelegate 中声明一个 NSString *string 并创建 iVar 和属性,合成它并使其成为复制类型的属性和

在 viewcontroller1 中

分配委托.string = @"";

在视图控制器中,您可以访问

NSString *string1 = delegate.string;

如果您收到任何错误提示在 viewcontroller1 或 viewcontroller2 中找不到委托,则在 viewcontroller1 和 viewcontroller2 中导入 appdelegate 和 macro.h 文件

干杯:)

于 2013-08-29T06:46:55.033 回答
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 回答