【发布时间】:2016-09-14 07:40:54
【问题描述】:
这是我在 SO 上的第一篇文章。我是一名程序员新手,就读于代码学校。
我的问题是我有一个用 Swift 编写的 iOS 应用程序。初始视图控制器是带有嵌入式 TableViewController 的 UINavigationController。它在右侧有一个名为“新游戏”的 BarButtonItem。我在 ViewDidLoad 中将此按钮设置为禁用。
newGameButton.enabled = false
在启动时,会运行一些代码以从服务器检索一些 JSON 数据。当它成功返回时,这非常快,我想启用 BarButton 项。我就是这样做的:
newGameButton.enabled = true
BarButtonItem 确实可以工作,尽管它仍然是灰色的,因为我可以点击它,将我带到另一个 TableViewController。然后该按钮立即显示为活动的。或者,如果我只是坐下来等待大约 15 秒,“新游戏”按钮最终会变为活动状态。但是,如果我立即旋转,无论是在 iOS 模拟器中还是在 iPhone 上运行应用程序时,它都会立即正确显示为处于活动状态。
我已经搜遍了 SO 并尝试了以下建议但没有成功:
self.navigationItem.rightBarButtonItem?.enabled = true
我还尝试为导航栏和父视图启用用户交互,结果相同。
self.navigationController?.navigationBar.userInteractionEnabled = true
self.navigationController?.view.userInteractionEnabled = true
我曾尝试寻找某种方法来“强制”导航控制器更新,但空手而归。
我期待听到有关如何解决此问题的想法。
另外说明,我们获取 JSON 数据的请求使用的是 NSURLSession,据我所知是异步的,因此不会阻止 UI 更新。
【问题讨论】:
标签: ios iphone uinavigationcontroller swift2 uibarbuttonitem