6

我在静态 UISwitch 上工作时遇到了一些麻烦UITableView。当应用程序加载时,我必须恢复某个特定的最后状态UISwitch,但是每当我检查 的状态时IBOutlet,它都是 nil。我试图手动分配变量,这也无济于事。

这是我正在做的事情:

设置控制器.h

//IBOutlet connected correctly
@property (strong, nonatomic) IBOutlet UISwitch *switch_displayDetail;

设置控制器.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 上进行测试后,初始算法运行良好。

我要被这个问题发疯了......

4

3 回答 3

1

我直接知道那些暮光区问题是多么令人沮丧。诊断信息显然太少,但我想我会分享我如何处理调试。

  1. 覆盖 switch_displayDetail 的设置器,在那里记录值,但也self
  2. 然后进入viewWillAppear,记录同样的事情

我有一种感觉,我们在这里谈论的不是同一个例子。如果我是对的,setter 将显示一个值,但不是viewWillAppear. 如果我错了,那么两者都将为零,在这种情况下,要么您没有调用正确的init方法,要么您的链接在 IB 中不正确。

只是我的两分钱。

于 2013-02-04T13:38:23.737 回答
1

谢谢大家的回答,但在几乎放弃之后,我在我的 iPod touch 上测试了我的应用程序,它运行良好。这看起来像是 iPhone 模拟器上的一个错误,或者很可能是 Xcode 上的一个错误(这里没有什么新东西)。重置 iPhone 模拟器菜单上的所有设置和数据后,它也在那里工作。

所以,在发疯之前,先在真机上测试你的 App

于 2013-02-04T16:25:11.270 回答
-1

第一的 :

@property (strong, nonatomic) IBOutlet UISwitch *switch_displayDetail; // should be a weak property

然后你@synthesized 你的财产了吗?

于 2013-02-04T13:57:18.017 回答