2010-04-11 101 views

回答

0

我会使用应用程序委托。或者,如果一个视图拥有另一个视图,则可以将它们初始化并保留在课程中的主要引用。

我总是觉得有一个全局的Context对象来保持视图间的全局信息。这些信息可能是配置信息,设备当前方向,数据库处理程序等。

对于需要跨访问的变量,可以使用属性。

class VC1 : UIViewController { 
    NSString* v1; 
    NSString* v2; 
} 

@property (copy) NSString *v1; 
@property (copy) NSString *v2; 

,然后在其他视图:

class VC2 : UIViewController { 
    VC1 *vc1; 
} 

,并在VC2你消息的实现,您可以使用VC1的v1和v2是这样的:

- (void) someMessage { 
    NSLog(@"VC1's v1 value is %@ and v2 value is %@", [vc1 v1], [vc1 v2]); 
} 

希望它能帮助。

+0

我的变量在哪里,一个视图如何知道另一个变量? – Moshe 2010-04-11 13:34:48

+0

用一些代码更新了我的答案。希望能帮助到你。 – 2010-04-11 13:47:57

+0

看起来不错,但我如何获得VC2的VC1值?每个视图控制器现在都会通过代理查看另一个视图控制器吗? – Moshe 2010-04-23 20:51:46

1

如果你想发回信息,你可以使用target-action(UIControl的方式),或者你可以发送NSNotifications,或者使用通用的委托协议。除非在整个应用程序中使用这些信息,否则将其放入您的应用程序委托可能会过度。

+0

我会说,虽然这是一种快速和肮脏的方式来传递视图之间的数据,它不是很好的做法。它将视图控制器连接在一起,使应用程序难以维护和扩展。 – TechZen 2010-04-11 14:26:40

+0

它非常明确地没有将任何东西连接在一起。联轴器在哪里? – 2010-04-11 14:51:54

+0

NSNotifications和代表+1 – Anurag 2010-04-11 18:32:40

相关问题