我有两个视图控制器和笔尖。我用一个切换开关填充了一个视图控制器,并在其头文件中声明了这一点:
@public UISwitch *toggleSwitch;
并将其作为这样的属性公开:
@property (nonatomic,retain) IBOutlet UISwitch *toggleSwitch;
我还将交换机与toggleSwitch
插座相连。然后我在我的其他视图控制器中使用了这个开关:
theViewControllerWhereIDeclaredTheSwitch.toggleSwitch.on = YES;
虽然默认情况下开关处于开启状态时一切正常,但是当我关闭开关时,它在main.m文件中引发了异常:“线程1:信号SIGABRT”。我在使用Xcode时经常遇到这个错误,这个错误真是我的屁股。请帮忙。
答案 0 :(得分:5)
您不应在多个UIViewControllers
上共享UI元素。
更好的方法是共享BOOL
,甚至将状态封装在继承自NSObject
的您自己的对象中,并在2 UIViewControllers
之间传递。
答案 1 :(得分:1)
@werner是对的。
编程Controller和View关联时,您正在实施NVC模式。 我们的想法是,您拥有此Controller对象,它是View和保存数据的Model之间的大脑。 因此,您应该在应用程序中执行的操作不是共享切换状态,而是在触发交换机时更新模型中的BOOL值,并与两个控制器共享模型,以便了解两个控制器中的值。
(CF:wikipedia)