• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iphone - ios setHidden :NO at begin of a long method does not show on display

[复制链接]
菜鸟教程小白 发表于 2022-12-12 23:34:58 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个从 Web 服务加载数据的方法。 在该方法的开始,我喜欢显示一个 UIActivityIndi​​cator。

但仅将隐藏更改为 NO 不会重绘 UIView。 所以 UIActivityIndi​​cator 是在长时间加载数据后可见的,这肯定为时已晚。

那么如何告诉 UIView 在数据加载开始之前重绘 activityIndi​​cator 呢?

- (IBAction)loadData{
    [activity setHidden:NO];
     // here the activtyIndicator should appear 
     ...
    loadlongdataFromNet..
    [activity setHidden:YES];
     // here the activtyIndicator should disappear 

}



Best Answer-推荐答案


切勿在主线程上执行网络和其他计算密集型操作!!!

它将卡住/阻止用户界面。您应该将与网络相关的长处理移至后台线程:

- (void)loadData
{
    [activity startAnimating]; // use this instead of setHidden
    [NSThread detachNewThreadSelectorselector(reallyLoadData) toTarget:self withObject:nil];
}

- (void)reallyLoadData
{
    // network-heavy processing
    // then:
    [activity performSelectorOnMainThreadselector(stopAnimating) withObject:nil waitUntilDone:YES];
}

关于iphone - ios setHidden :NO at begin of a long method does not show on display,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13124226/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap