我用searchBar(使用searchDispalyController)实现了tableView,用户可以输入搜索词, TableView 显示哪些故事包含该搜索词。点击单元格后,pageBasedView 将推送到包含文本的 View ,用户可以 curl 页面。 (该应用程序是一本书)。
繁重的任务是找到一种将大文本截断为小部分并将它们添加到数组中的方法。
因此,当用户点击单元格时,截断的负担将转移到 pageBasedViewController 上。大约需要几秒钟才能完成截断并且页面准备好导航。
在这几秒钟内,我想显示一个我使用 MBProgressHud 的 ActivityIndicator。
当点击单元格时,问题出现了,直到新页面进入 View 时,activityIndicator 才会出现。
[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];
});
});
这是一个屏幕截图,显示了应用程序的流程:
我很惊讶为什么我看不到 ActivityIndicator!删除此代码后:
[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/