我在导航控制器中嵌入了一个UITableViewController。我的rightBarButtonItem是一个刷新按钮。按下时,该按钮会触发服务器的更新。更新是同步的(当我有时间时,我将其更改为异步请求)。我想做的事情在理论上听起来很简单。按下按钮后:
然而,发生的事情是我将rightBarButton设置为带有活动指示器视图的视图,但是在之后表视图重新加载时它才会更新,这显然毫无意义。我的服务器更新例程如下所示:
由于它是同步的,我认为它只会一步一步地前进,但那不起作用。我怎样才能使activityIndicatorView显示并消失?
答案 0 :(得分:1)
当您修改导航栏时,修改实际上不会立即应用于屏幕,它们将在下一个屏幕更新周期或下一个屏幕刷新或下一次重绘期间应用。
在您的代码中,您似乎在设置导航栏后立即向服务器发送同步请求。该请求现在阻止主线程,并且系统无法刷新屏幕,因为所有UI代码都在主线程上运行。
使用异步请求,或者只是在另一个线程上发送请求,或者您希望尝试同步请求的其他一些巫术将帮助您解决问题。但是这些解决方案的本质是主线程不会被任何同步方法阻止。