【问题标题】:Reading the state of a UISwitch after an asynchronous call异步调用后读取 UISwitch 的状态
【发布时间】:2023-07-12 21:46:01
【问题描述】:

我有一个带有 UISwitch 的登录屏幕,用于让用户选择“记住我”,以便我可以在需要时将他/她的凭据存储在钥匙链上。

只有当用户选择“记住我”并且服务器接受用户名/密码时才会发生这种情况。但是,当服务器回复时,我很难参考 UISwitch 的状态。令我惊讶的是,myUISwitch.on 的值是 (null)。

NSLog (@"(Successful login. Value of UISwitch rememberMe: %@)", rememberMe.on);

我必须将此信息存储在临时布尔值中吗?

【问题讨论】:

  • UISwitch.on 是 BOOL(类型定义为签名字符),而不是 id(或其他 NSObject*),因此使用“%@”对其进行格式化不会达到您的预期。将其转换为 int 并使用 "%d" 或类似的东西。

标签: iphone asynchronous uiswitch


【解决方案1】:

如果为null,则不是on属性而是rememberMe变量,没有设置。在 Interface Builder 或代码中正确连接它。

另外,请确保始终从主线程访问 UIKit,即使用 performSelectorOnMainThread:enter code here

【讨论】:

    【解决方案2】:

    在你提到开关的时候视图还没有释放吗? UISwitch 是否已由运行时发布?您什么时候尝试读取它的状态?在您读取其状态时,该控件是否仍在屏幕上?

    【讨论】:

      最近更新 更多