使用开关时出现问题

时间:2012-07-13 07:30:10

标签: objective-c xcode cocoa-touch xcode4 uiswitch

我有两个视图控制器和笔尖。我用一个切换开关填充了一个视图控制器,并在其头文件中声明了这一点:

@public UISwitch *toggleSwitch;

并将其作为这样的属性公开:

@property (nonatomic,retain) IBOutlet UISwitch *toggleSwitch;

我还将交换机与toggleSwitch插座相连。然后我在我的其他视图控制器中使用了这个开关:

theViewControllerWhereIDeclaredTheSwitch.toggleSwitch.on = YES;

虽然默认情况下开关处于开启状态时一切正常,但是当我关闭开关时,它在main.m文件中引发了异常:“线程1:信号SIGABRT”。我在使用Xcode时经常遇到这个错误,这个错误真是我的屁股。请帮忙。

2 个答案:

答案 0 :(得分:5)

您不应在多个UIViewControllers上共享UI元素。

更好的方法是共享BOOL,甚至将状态封装在继承自NSObject的您自己的对象中,并在2 UIViewControllers之间传递。

答案 1 :(得分:1)

@werner是对的。

编程Controller和View关联时,您正在实施NVC模式。 我们的想法是,您拥有此Controller对象,它是View和保存数据的Model之间的大脑。 因此,您应该在应用程序中执行的操作不是共享切换状态,而是在触发交换机时更新模型中的BOOL值,并与两个控制器共享模型,以便了解两个控制器中的值。

(CF:wikipedia