objective-c - MBProgressHUD 在 tableView 中使用时不显示

标签 objective-c uitableview uiactivityindicatorview mbprogresshud

我用searchBar(使用searchDispalyController)实现了tableView,用户可以输入搜索词, TableView 显示哪些故事包含该搜索词。点击单元格后,pageBasedView 将推送到包含文本的 View ,用户可以 curl 页面。 (该应用程序是一本书)。

繁重的任务是找到一种将大文本截断为小部分并将它们添加到数组中的方法。

因此,当用户点击单元格时,截断的负担将转移到 pageBasedViewController 上。大约需要几秒钟才能完成截断并且页面准备好导航。

在这几秒钟内,我想显示一个我使用 MBProgressHud 的 ActivityIndi​​cator。

当点击单元格时,问题出现了,直到新页面进入 View 时,activityIndi​​cator 才会出现。

 [MBProgressHUD showHUDAddedTo:self.view animated:YES];
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
//the heavy task
    [self truncate:contentString];
    dispatch_async(dispatch_get_main_queue(), ^{
        [MBProgressHUD hideHUDForView:self.view animated:YES];
    });
});

这是一个屏幕截图,显示了应用程序的流程: enter image description here

我很惊讶为什么我看不到 ActivityIndi​​cator!删除此代码后:

[MBProgressHUD hideHUDForView:self.view animated:YES];

滑回 masterViewController 并再次点击单元格进程,花费几秒钟,令人惊讶的是,您会看到指示器正在工作!但我很惊讶为什么第一次它不起作用?

从中午到午夜我都在努力。但没有解决办法!

我已经上传了示例应用程序 从这里下载:(67 KB)

http://www.mediafire.com/download/decvu7uig9r6v1a/pageBasedApp.zip

最佳答案

您的代码显示 HUD,然后立即将其删除。

您显示 HUD,然后设置一个在后台线程上运行的任务,然后在任务完成之前删除 HUD。

我建议在您的方法中添加一个完成 block ,以便您知道它何时完成,然后删除 HUD。

更好的做法是将您的方法放入第一个 Controller 中并在显示 HUD 时调用它,然后推送到最终 Controller 。不需要中间人。

关于objective-c - MBProgressHUD 在 tableView 中使用时不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20409952/

相关文章:

objective-c - 连接到服务器

objective-c - 你如何改变 Cocoa 中窗口关闭按钮的状态?

objective-c - 通过文本字段上的自动布局调整字体大小并更改高度

ios - 想知道如何以编程方式在 swift 3.0 中子类化 UITableViewCell 吗?

ios - UIActivityIndi​​catorView 不显示/开始动画

ios - 为什么不断动画的 UIActivityIndi​​cator 不会阻塞主线程?

objective-c - 有没有检查 UIViewController 是否出现的好方法?

ios - 如何将图像添加到 UITableViewCell 删除按钮

ios - TableView 单元格 - UITableView - 无法在详细 View 中显示多行

ios - 在 iOS 中处理两个屏幕和一个事件指示器