iphone - Present Modal ViewController 需要 5 秒才能调出模态

标签 iphone ios modalviewcontroller uiactivityindicatorview uipagecontrol

我正在尝试呈现模态 vc。但它需要大约 5 秒左右的时间,因为用户尝试点击按钮直到他们在屏幕上看到一些东西,延迟似乎很重要。

我的模态视图有 3 个页面,每个页面有 6 个表作为 subview 。我没有使用任何网络连接。所有表格均从本地 xml 数据加载。

所以,我的问题是 1)有没有办法可以提高加载模态 vc 的性能? 2) 或者我可以显示事件指示器并让 View 在后台线程上加载并在加载完成后删除指示器吗?

我尝试了选项 2。我在 viewDidLoad 上启动了事件指示器,并使用 performSelectorInBackground 方法在后台线程中启动了所有页面初始化代码。但是,这让我的 table 看起来很奇怪,框架全都变形了,宽度也搞砸了等等。任何建议都会有很大帮助。

最佳答案

切勿在后台线程中显示或修改界面元素。如果您在后台线程中并且想在主线程中执行某些操作,则可以使用选择器:

[self performSelectorOnMainThread:@selector(doSomething:)
                       withObject:someObject
                    waitUntilDone:NO];

或者你可以使用 GCD(我最喜欢的):

dispatch_async(dispatch_get_main_queue(), ^{
    [self doSomething:someObject];
});

无论您使用哪种方法,只要确保如果您在后台线程中加载数据然后尝试从该后台线程加载 View ,请始终在主线程上执行该调用,否则您会得到奇怪的结果你提到的行为。

关于iphone - Present Modal ViewController 需要 5 秒才能调出模态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6496017/

相关文章:

iPhone 模态视图 Controller 和设备方向

iphone - iPhone SDK中防止光标移到键盘后面的最简单方法?

iPhone - 动画 View Controller 演示

iphone - 如何在延迟后为 popViewController 设置动画?

后台的 ios(swift) 位置 (ios 9.3.2) 停止工作

ios - 如何关闭ModalViewControllerAnimated : YES

iphone - 是否有用于解码 iPhone pdf417 条形码类型的 sdk?

iphone开发: is it possible to extend more than one viewControllers?

ios - 在 Swift 中解包 Dictionary of Dictionaries 时遇到麻烦

ios - didReceiveRemoteNotification 和模态视图