基本概念:两种观点之间的沟通?

时间:2010-04-11 13:06:06

标签: objective-c iphone model-view-controller

如何在两个视图之间发送信息(因此,两个类)?我在寻找我的应用代表吗?有更好的或替代的方式吗?

2 个答案:

答案 0 :(得分:1)

如果要发回信息,可以使用target-action(UIControl的方式),也可以发送NSNotifications,或使用通用委托协议。除非这是整个申请中的使用信息,否则将其放入您的应用代表可能会有点过分。

答案 1 :(得分:0)

我会使用Application Delegate。或者,如果一个视图拥有另一个视图,您可以将它们一起初始化并在类中保留它的主要引用。

我总是觉得有一个全局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]);
}

希望它有所帮助。