gpt4 book ai didi

iphone - 如何延迟 UIKit 中的 UINavigationController 转换?

转载 作者:行者123 更新时间:2023-11-28 19:24:29 25 4
gpt4 key购买 nike

情况:
我有两个由导航 Controller (UINavigationController) 管理的 View Controller (UIViewController)。在加载时,第一个 View Controller (一种等待屏幕)启动第二个 View Controller 的加载,这需要一些时间。就像现在一样,第一个 View Controller 不会转换到第二个 View Controller ,直到所有数据都已加载——据我所知,这是 UIKit 中的正常行为。

问题:
我希望第一个 View Controller (等待屏幕)在等待第二个 View Controller 加载时至少显示 2 秒。问题是,有时第二个 View Controller 的加载在 2 秒之前完成,2 秒的等待被中断。

梦想:
我希望从第一个 View Controller 到第二个 View Controller 的过渡延迟到 2 秒过去。

A) Dream Scenario A:
如果被推送的第二个 View Controller 的加载在 2 秒延迟之前完成,我希望过渡(您实际看到的动画)是延迟到 2 秒延迟完成。

B) 梦想场景 B:
如果在加载完成之前经过 2 秒,过渡(您实际看到的动画)应该在加载完成后立即正常发生。

在 objective-c 或 cocoa 中是否有任何回调或通知可以让我这样做?

谢谢。

更新/澄清:(抱歉,我没说清楚)
乍一看,NSTimer 似乎是我的解决方案。好吧,不幸的是它不是。 我知道如何使用 NSTimer 在延迟后推送 View Controller (不是问题)。实际上,当第一个 View Controller 加载时,我会立即推送第二个 View Controller 。这个想法是,由于第二个 View Controller 的加载需要一段时间,我给用户一个漂亮的等待屏幕与第一个 View Controller 。

想要控制的原因:
可能存在被推送的第二个 View Controller 的加载很快完成的情况——在这种情况下,第一个 View Controller 可能只在几分之一秒内可见。这看起来不专业。因此,我不想这样,而是想在恒定的时间内显示等待屏幕以保持一致性,并提供一些有关该应用程序的简短有用信息。我的应用程序是一本书,等待屏幕更像是 Frontis 的作品——显示标题和作者。

最佳答案

以后要进行方法调用,我发现最方便的方法是使用performSelector:withObject:afterDelay:

performSelector:withObject:afterDelay: Invokes a method of the receiver on the current thread using the default mode after a delay.

  • (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay

Parameters aSelector A selector that identifies the method to invoke. The method should not have a significant return value and should take a single argument of type id, or no arguments. See “Selectors” for a description of the SEL type. anArgument The argument to pass to the method when it is invoked. Pass nil if the method does not take an argument. delay The minimum time before which the message is sent. Specifying a delay of 0 does not necessarily cause the selector to be performed immediately. The selector is still queued on the thread’s run loop and performed as soon as possible. Discussion This method sets up a timer to perform the aSelector message on the current thread’s run loop. The timer is configured to run in the default mode (NSDefaultRunLoopMode). When the timer fires, the thread attempts to dequeue the message from the run loop and perform the selector. It succeeds if the run loop is running and in the default mode; otherwise, the timer waits until the run loop is in the default mode.

关于iphone - 如何延迟 UIKit 中的 UINavigationController 转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5066189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com