我在静态UITableView
上使用UISwitch时遇到了一些麻烦。
我必须在应用程序加载时恢复某个UISwitch
的最后一个状态,但每当我检查IBOutlet
的状态时,它都是零。我试图手动分配变量,这也无济于事。
这是我正在做的事情:
SettingsController.h
//IBOutlet connected correctly
@property (strong, nonatomic) IBOutlet UISwitch *switch_displayDetail;
SettingsController.m
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if (!_switch_displayDetail) {
NSLog(@"_switch_displayDetail is NIL"); //This is always displayed
}
//Switch is default to YES, I am trying to set it to NO
//This line does nothing...
[_switch_displayDetail setOn:[dataManager shouldDisplayDetail] animated:YES];
}
当我检查_switch_displayDetail
的状态时,其他任何地方都是零。我正在调用所有超级初始化方法。
iOS 6.1上有什么变化吗?
[编辑]使用合成变量也不起作用。
[编辑2]发现问题是Xcode或iPhone模拟器上的错误。在我的iPod touch上测试后,初始算法运行得很好。
我对此问题感到疯狂......
答案 0 :(得分:1)
我亲自了解那些 Twilight zone 问题是多么令人沮丧。显然,诊断的信息太少,但我想我会分享如何进行调试。
self
viewWillAppear
中记录相同的内容我有一种感觉,我们不是在谈论同一个实例。如果我是对的,那么setter会显示一个值,但不会显示viewWillAppear
。如果我错了,那么两者都将是零,在这种情况下,要么你没有调用正确的init
方法,要么你的联系在IB中不正确。
只是我的两分钱。
答案 1 :(得分:1)
感谢大家的回答,但几乎放弃后,我在iPod touch上测试了我的应用程序,它运行得很好。这看起来像是iPhone模拟器上的一个错误,或者很可能是Xcode上的一个错误(这里没什么新东西)。重置iPhone模拟器菜单上的所有设置和数据后,它也在那里工作。
所以,在疯狂之前,在真实设备上测试您的应用。
答案 2 :(得分:-1)
第一:
@property (strong, nonatomic) IBOutlet UISwitch *switch_displayDetail; // should be a weak property
然后你有@synthesized你的财产?