【发布时间】:2014-10-20 15:25:20
【问题描述】:
我有一个基于标签栏的应用程序。所有 5 个选项卡中都有导航控制器,其中自定义视图控制器的实例正确设置为根视图控制器。这加载就好了。其中一些视图控制器包含表视图。当用户在表格视图中选择一行时,我想向用户显示一个模态视图控制器。 didSelectRowAtIndexPath 委托方法的(相关部分)如下所示:
SampleSelectorViewController *sampleVC = [[SampleSelectorViewController alloc] init];
[self presentViewController:sampleVC animated:YES completion:NULL];
模态视图控制器出现了,但它出现在一个非常明显的延迟之后。有时它甚至需要用户再次点击该行。我已经验证的几件事是:
- 当用户点击行时,会调用表格视图的 didSelectRowAtIndexPath 方法
- didSelectRowAtIndexPath 方法不包含任何阻塞调用。没有执行网络操作,模态视图控制器的设置不涉及任何处理密集型任务。它显示的数据是静态的。
- 如果我将新的视图控制器推送到导航堆栈上(其他一切都保持不变),它的行为会非常完美,没有任何延迟。只有在模态呈现时才会遇到延迟。
有什么想法/建议吗?
【问题讨论】:
-
出于兴趣,与
animated:NO一样慢吗? -
是的。动画似乎对这种奇怪的行为没有影响。
-
有趣。我有同样的问题,即模式演示被延迟(或必须点击屏幕才能显示)。就我而言,它不是直接触发的,而是由 didSelectRowAtIndexPath 间接触发的。它调用一个委托方法,它调用一个委托方法,它以模态方式呈现。嗯..
-
听起来与我的场景非常相似。你介意分享一下你是如何解决这个问题的吗?我之前或之后从未见过这个问题,并且项目中不再存在这种情况,所以我自己帮不上什么忙
-
在 iOS 11、Xcode 9 上出现同样的问题,还没有运气......
标签: ios objective-c iphone modalviewcontroller