我正在为iPad构建一个多视图应用程序。目前,我在ViewControllers
上有3 SplitViewController Application
。如何将ViewController 1
和View Controller 2
上插入的数据发送到ViewController 3
?
这是我的故事板中的图像。
答案 0 :(得分:2)
考虑你要从ViewController1向ViewController2,ViewController3发送字符串数据。
在ViewController2和ViewController3中创建字符串变量的属性。
@property(nonatomic,strong) NSString *str;
同时推送ViewController2和ViewController3:
ViewController2 *viewController = [ViewController2 alloc]init];
viewController2.str = @"Some text";
[self.navigationController pushViewController:viewController2 animated:YES];
您可以从ViewController2中的ViewController1发送数据。
答案 1 :(得分:1)
您必须保留对数据的引用,并在视图控制器之间传递它,或从某个地方检索它。它可以来自本地数据库,来自单例实例中的内存中对象,也可以是其他任何内容。
也许在您的用例中,触发segue的视图控制器(具有大量按钮的视图控制器)可以保存包含数据的对象,并在即将到来时将其传递给视图控制器1,2和3。出现。
答案 2 :(得分:0)
使用父NSObject创建新类Singleton
@interface Singleton : NSObject
@property (nonatomic, strong) NSString *stringParams1;
@property (nonatomic, strong) NSString *stringParams1;
+ (Singleton *)sharedInstance;
@end
Singleton.m:
@implementation STGameHelper
+ (Singleton *)sharedInstance
{
static dispatch_once_t once;
static id sharedInstance;
dispatch_once(&once, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
}
@end
因此在视图控制器1和2中只需访问此单例:
Singleton *s = [Singleton sharedInstance];
s.stringParams1 = textField1.text;
s.stringParams2 = textField12.text;
在视图控制器3中,您将拥有相同的单例实例。例如在viewDidLoad中访问它:
Singleton *s = [Singleton sharedInstance];
textField1On3rdViewcontroller.text = s.stringParams1;
textField2On3rdViewcontroller.text = s.stringParams2;
在此处阅读有关单身人士的更多信息:link
由于您是初学者,我建议您现在使用单例而不是核心数据,但如果您需要在输入后存储数据,我建议您阅读一些教程如何使用核心数据,因为它是非常强大的东西它会让你的生活更轻松。但是现在,如果你需要在应用程序关闭后存储数据,它就足以拥有单例。