2013-09-28 53 views
1

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

回答

2

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

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

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

通过这种方式,您可以将您的代码解耦,这意味着可以减少可能不相关的控制器之间的依赖关系并减少胶水代码。

我也给出了类似的回答here

-2

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

static NSMutableDictionary* single = nil; 

@implementation Test 

@end 
相关问题