我正在尝试呈现模态 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/