如何在选项卡式应用程序中的ViewController之间共享数据
我想在选项卡式应用程序中的几个ViewController之间共享一个variables。 我尝试使用[NSUserDefaults]来保存和加载variables,但每次应用程序崩溃。 这是我在SecondViewController中的代码
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. totalApples = [[NSUserDefaults standardUserDefaults]integerForKey:@"numberOfApples"]; [self setText:[NSString stringWithFormat:@"%g", totalApples] withExistingAttributesInLabel:self.l1]; }
它突出了[super viewDidLoad]; 当我点击标签打开第二个视图作为崩溃的原因。
以防万一:如果您只需要在几个VC之间共享数据, NSUserDefaults
可能不是您的模型的最佳方式。 在这种情况下,您可能需要考虑使用单例devise模式的优点来创build共享数据所在的类。
一个tabbarcontroller包含许多相同级别的viewControllers(而不是一个UINavigationController,它包含分层数据,所以第一个viewController将部分数据传递给下一个)。 那些viewControllers需要: – 一些对象把他们的数据 – 他们可以从中获取数据的一些对象。
第二种方法要求那些viewController知道可以给他们的数据的对象,因此被认为是严格的devise。 第一种方法意味着你有一些更高级的对象可以获取数据(或已经包含它),并且可以将它提供给viewcontrollers。 这是一个更优雅的解决scheme,viewCOntrollers将更易于插拔。 你可以在这里使用的对象是UITabBarController的子类。 这个对象包含('知道')viewControllers。 如果这个对象包含了dat(或者可以检索它),那么这个对象就可以把它提供给viewControllers。
LudoZik(@LudoZik:我想提高你的答案,但没有被允许,因为没有足够的代表)。 指出,创build一个自定义的类(或为了简单NSDictionary也行),持有的数据。 这个可以被UITabBarController的子类所拥有,并在必要的时候(例如被select时,或者已经被加载的时候)被赋予子视图控制器。
- 如何在主页button被按下后在背景中animationCABasicAnimation?
- Swift 3 – NSString.draw(in:rect,withAttributes :) – 未在预期点绘制文本
- 从plist获取数据到NSMutableArray并将NSMutableArray写入同一个plist iPhone
- 分页和UITableView?
- WatchKit扩展捆绑包ID不可用
- iPhone本地存储“QUOTA_EXCEEDED_ERR”的问题
- ios 10 NSfetchedResultController在删除多行时不进行动画处理
- 从AFNetworking直接获取NSData,而不是让它转换为UIImage
- 线程调用方法