切换视图控制器后如何保持变量的值?

时间:2013-09-28 03:55:03

标签: objective-c uiviewcontroller

在加载视图ClassB.m之后,我需要在ClassA.m中访问变量的值,但似乎当我将视图从ClassA切换到ClassB时,类A中的变量被销毁。在ClassA中维护此变量的最佳方法是什么?在Java中,这将以静态变量的形式相当容易。但是,我不知道Objective-C中有这样一个概念。如果你建议使用“extern”变量,我试过了,那个变量类型在视图切换后似乎也被破坏了?也许我的实施不正确,但你有什么想法?在第一个视图被解除后,如何在第二个视图中保持变量的值?

3 个答案:

答案 0 :(得分:2)

您可以在新的viewcontroller中创建属性,并将当前viewcontroller的变量传递给new。见exp。

    DetailsViewController *detailsviewcontroller = [[DetailsViewController alloc] initWithNibName:@"EventDetailsViewController" bundle:nil];
eventdetailsviewcontroller.event = localvar;
[self.navigationController pushViewController:detailsviewcontroller animated:YES];

答案 1 :(得分:1)

暂时忘掉静态变量。这个想法是你希望一个对象继续引用那些变量而不管哪个视图。这就是mediator pattern的用途。基本上你想要一个控制器控制器(使它成为一个singelton),并且该控制器可以在视图来去时保持对你想要保留的所有变量的引用。

通过这种方式,您可以解耦代码,从而降低可能不相关的控制器之间的依赖关系并减少粘合代码。

我也给出了类似的答案here

答案 2 :(得分:-2)

您可以在Objective-C中使用静态变量。这是Test.m文件中的一个示例

static NSMutableDictionary* single = nil;

@implementation Test

@end