我在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";
}
等等