ios在关闭前一个视图控制器后立即显示视图控制器
在我的ios应用程序中,假设我有三个ViewController:A、B和C 从A开始,我呈现B,并指定A作为代表。在B上完成一个操作后,我想关闭B并从A中显示C。然而,我想在屏幕上根本不显示A的情况下执行此操作。这是我现在的代码,在类A中: 然后这是A中的委托函数,B在执行操作时调用该函数:ios在关闭前一个视图控制器后立即显示视图控制器,ios,object,presentviewcontroller,Ios,Object,Presentviewcontroller,在我的ios应用程序中,假设我有三个ViewController:A、B和C 从A开始,我呈现B,并指定A作为代表。在B上完成一个操作后,我想关闭B并从A中显示C。然而,我想在屏幕上根本不显示A的情况下执行此操作。这是我现在的代码,在类A中: 然后这是A中的委托函数,B在执行操作时调用该函数: - (void) actionPerformed { [self dismissViewControllerAnimated:YES completion:^{ C *vc = [self
- (void) actionPerformed
{
[self dismissViewControllerAnimated:YES completion:^{
C *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"C"];
[self presentViewController:vc animated:NO completion:nil];
}];
然而,这会导致在调用dismise后,C显示一段时间,即使我将呈现代码放入dismise的完成处理程序中。我能做些什么来避免这种情况
You can manage this by timeinterval
like This way
您可能会首先错过该视图
[自责]
-(void)dismiss
{
[self dismissViewControllerAnimated:YES completion:nil];
[self performSelector:@selector(present) withObject:nil afterDelay:2.0];
}
-(void)present
{
C *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"C"];
[self presentViewController:vc animated:NO completion:nil];
}
如果您使用它作为登录方法,那么您应该尝试另一种方法。我的意思是,如果A是您的根视图控制器,则将其作为登录视图控制器,以检查用户是否有会话。假设用户有一个会话,然后使用[[[UIApplication sharedApplication]委派]窗口]setRootViewController:]将您的C viewController设置为rootViewController如果他没有会话,则向他显示相同的页面a viewController,不需要B。试试看,这可能会提高你的应用程序性能。Bro根据我的说法,最好的方法是将你的B和C添加为a的子视图控制器,而不是以模式显示它们。如果你愿意,我可以给你代码。我使用这个机制来处理登录-所以A是根视图控制器,它检查用户是否登录。如果没有,它将显示登录视图控制器B。一旦用户登录,它将显示C.@iDeveloper显示您的代码,并让您了解处理ChildViewController的含义,以及在不显示viewcontroller@NarasimhaiahKolli您可以使用在两个childViewController之间进行转换[自转换从ViewController:到ViewController:持续时间:选项:动画:完成:]方法。我希望你得到了bro。@iDeveloper谢谢你。它帮助很大。由于遗留代码,我仍然有三个视图控制器更容易。但是我修改了操作代码,将C设置为根视图,这确保没有延迟
-(void)dismiss
{
[self dismissViewControllerAnimated:YES completion:nil];
[self performSelector:@selector(present) withObject:nil afterDelay:2.0];
}
-(void)present
{
C *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"C"];
[self presentViewController:vc animated:NO completion:nil];
}