ios - 选择 UITabBarController 中的特定项目时,关于触发 "loading"UIView 有什么想法吗?

标签 ios uitabbarcontroller xamarin.ios

我有一个有四个选项卡的应用程序。我有四个 UINavigationController,每个 Controller 都通过设置每个 Controller 的 TabBarItem 属性绑定(bind)到 UITabBarController,然后将 Controller 添加到 UITabBarController。这就是所有标准的 iOS 费用。

其中一个选项卡加载了一个 UITableView,该 UITableView 显示来自远程 Web 服务的一些数据。因为 Web 服务调用通常需要大约 1.5 秒才能完成和反序列化,所以我想在选择相应选项卡时显示带有文本“正在加载...”的“正在加载”UIView。我已经尝试了几种方法:

  • 将委托(delegate)分配给 UITabBarController 上的 ViewControllerSelected 事件,并检查以确保所选 Controller 是我感兴趣的 Controller 。然后我尝试显示“正在加载”的 UIView。这一切都发生在 AppDelegate 中;

  • 覆盖 Controller 本身的 ViewWillAppear 和 ViewWillDidAppear 方法。在 ViewWillAppear 方法中显示 LoadingHUDView,在 ViewDidAppear 方法中隐藏。

在这两种情况下:

  1. “正在加载”的 UIView 是一个局部变量 (lhv),并且已经设置了我想要的文本。
  2. lhv.SharedApplication.KeyWindow.Add(lhv);
  3. lhv.StartAnimating(); (UIView 包含一个 UIActivityIndi​​catorView)
  4. 执行服务调用并刷新 UITableView
  5. lhv.StopAnimating();
  6. lhv.RemoveFromSuperview();

(是的,我知道我不需要在 AppDelegate 中使用 lhv.SharedApplication.KeyWindow,因为我有可用的本地“窗口”成员。)

问题在于“正在加载”的 UIView 直到 UINavigationController 呈现其 View 后才会呈现。我希望 LoadingHUDView 在 UITabBarController 被点击时立即出现。我也尝试过使用 InvokeOnMainThread(),但没有成功。

有什么想法吗?

最佳答案

>.< 想通了。只需在 ViewWillAppear 或 ViewDidAppear 开始时在新线程中启动加载 UIView。然后只需要在相应方法的末尾通过从父 View 中删除 View 来进行清理。早就该想到了!哦!

关于ios - 选择 UITabBarController 中的特定项目时,关于触发 "loading"UIView 有什么想法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5383082/

相关文章:

ios - 如何以编程方式区分两个不同的 Apple Watch?

ios - SQLite、CoreData 还是静态数据?

ios - UIScrollView 中的两个 UIViews 和一个 UICollectionView(或更好的方法)

iphone - 如何从 View Controller 引用应用程序委托(delegate)中的 ManagedObjectContext?

ios - 在 TabBar 中的部分之间添加分隔符

c# - CrossMediaManager.Current.Play 不在 iOS xamarin.forms 上播放本地音频文件

ios - Xcode 5 文档错误

ios - TabBar Controller 中的暗状态栏?

ios - Xamarin iOS 私有(private) API 使用

c# - 如何在 Xamarin 中查找当前的 UIViewController