6

您好,我有一个 ViewController 在按钮上执行 segue。

- (IBAction)moveToCoolViewButtonTapped {
    [self performSegueWithIdentifier:@"toCoolView" sender:nil];
}

这工作正常,除了第一次执行时令人讨厌的延迟之外,我猜是由于视图尚未初始化。我显然不想过早地创建很多视图。(从同一个 viewController 计划了其他几个 segues)。所以,也许是一个长镜头:但我想知道是否有人有任何出色的灵感技巧来避免最初的滞后?

4

3 回答 3

2

尝试替换这个

[self performSegueWithIdentifier:@"toCoolView" sender:nil];

有了这个

dispatch_async(dispatch_get_main_queue(),^{
    [self performSegueWithIdentifier:@"toCoolView" sender:nil];
});
于 2015-04-07T15:30:09.073 回答
1
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
toCoolView *yourViewController = (toCoolView *)[storyboard instantiateViewControllerWithIdentifier:@"toCoolView"];
[self.navigationController pushViewController:yourViewController animated:YES];

试试那个搭档

于 2013-01-22T13:02:38.007 回答
0

嘿,我有同样的问题。看到你的帖子寻找解决方案。我想我终于找到了问题所在。

问题不在于您在 performSegueWithIdentifier 中,而是在您的目标控制器中(无论“toCoolView”带您到哪里)。检查它的 viewDidLoad 并查看是否有任何可能需要额外时间来加载的内容。在我的情况下,我正在分配和初始化导致延迟的 UIImagepickerController,因此我将其从那里删除并将其放置在 ViewDidAppear 中。

只需尝试注释掉目标控制器的 viewDidLoad 中的所有内容,看看它是否加快了序列。

希望能帮助到你

于 2014-06-30T10:43:36.100 回答