我在mainViewController.m中有一个公开声明的NSString,NSString *characterString,就在执行[self performSegueWithIdentifier:@"segueToFinal" sender:self];之前,我用最新数据更新了该characterString。像这样:

characterString=[NSString stringWithFormat:@"final string %@",truncatedString];
[self performSegueWithIdentifier:@"segueToBlueprints" sender:self];


当新的视图控制器完成显示时,用户将在某个时间按下按钮,该按钮将调用一个方法,该方法将从前一个视图控制器中获取characterString以及可能需要其他公开声明的实例变量。我正在尝试[[mainViewController alloc]getCharacterString](其中getCharacterString是在mainViewController中实现的方法),但是那当然会创建mainViewController的新实例,并且不能解决问题。

如何从旧的视图控制器访问'characterString'中当前的数据和其他变量?

最佳答案

将所有全局变量保留在AppDelegate中:
您的AppDelegate.h

@interface BTAppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@property (strong, nonatomic) NSString * characterString;

@end

您的ViewController.m
- (void)viewDidLoad
{
    [super viewDidLoad];
    YourAppDelegate* app = (YourAppDelegate*)[UIApplication sharedApplication].delegate;

    app.characterString = @"Hello";

}

您的SecondViewController.m
- (IBAction)pressButton:(id)sender{
YourAppDelegate* app = (YourAppDelegate*)[UIApplication sharedApplication].delegate;

        app.characterString = @"Hello2";


}

等等

08-26 03:22