在视图控制器之间进行通信

时间:2010-01-17 00:53:15

标签: objective-c iphone-sdk-3.0 model-view-controller uiswitch

我的一个视图控制器有几个UISwitch,我希望另一个视图Controller能够访问If /和语句的UISwitch的值。我如何在Objective-c中执行此操作?

2 个答案:

答案 0 :(得分:1)

这是一个坏主意,因为它会在视图控制器之间创建不必要的依赖关系。

如果您仍想这样做,只需将带有开关的第一个视图控制器的引用传递给第二个视图控制器。然后,在第二个视图控制器中,只需访问相应的UISwitch的on属性。

但是,我强烈建议你创建一个自定义类来保存每个UISwitch的布尔状态,而不是走那条路。此类的实例可以是单例,也可以包含在应用程序委托中。有关如何使用这两种方法执行此操作,请参阅此answer

自定义类更好,因为UISwitch只是表示数据模型中某些属性的一种方法。如果明天你用另一种幻想取代了UISwitch 控制,第二个视图控制器仍应继续工作。两个视图控制器都引用了此自定义类的对象。只要有更改,第一个控制器就会更新此对象。

类接口可能是这样的:

@interface DataValues : NSObject {
    BOOL first;
    BOOL second;
    BOOL third;
}

@property BOOL first;
@property BOOL second;
@property BOOL third;

答案 1 :(得分:0)

你可能不想这样做。如果你想让第二个ViewController根据第一个引用的开关有不同的行为,你应该只需将开关绑定到用户默认值,你可以在你的应用程序的任何地方阅读。

http://icodeblog.com/2008/10/03/iphone-programming-tutorial-savingretrieving-data-using-nsuserdefaults/