1

我对 ios dev 有点陌生,如果用户已经获得访问令牌的授权,我正在尝试禁用按钮。我只是不知道是否有一种干净的方法。现在我在我的 viewWillAppear 中有一个检查,它调用 api 客户端对象 isAuthorized: 返回一个布尔值并将按钮的启用设置为是/否。在 isAuthorized 中,如果存在访问令牌,我会发出一个测试 http 请求,但由于我必须等待完成块,因此时间已关闭,并且按钮在不应该时被禁用。我应该设置一个 NSNotification 还是应该只在 viewWillAppear 而不是在客户端中发出测试 http 请求?还是有更好的解决方案?

谢谢

4

1 回答 1

1

首先,您的视图控制器只与“客户端”对象对话并且客户端对象与服务器对话,这很好。这才是正确的布局。现在如何设计 UI 部分:

  • 您的客户对象需要一种“我的授权是最新的吗?”的内在感觉。这可能意味着它检查过一次,或者在最后 X 分钟内检查过。取决于你的情况。

  • 当您调用 时isAuthorized,如果身份验证不是最新的,您会立即返回NO并提出请求。

  • 当请求进来时,您调用setAuthorized:,它将发布 KVO 通知。

  • 您的视图控制器 KVO 会根据需要观察isAuthorized并更新按钮。(或者,您可以使用委托方法或通知。)

如果您想区分“未授权”和“我不知道”,只需创建一个 3 选项枚举和一个方法authorizationState,而不是isAuthorized.

于 2012-08-24T04:35:41.827 回答