Iphone 使用等待对话框并导航到另一个ViewController
我正在尝试使用应用程序中的等待对话框 我的应用程序中有一个按钮。当用户单击它时,我们导航到另一个viewController:Iphone 使用等待对话框并导航到另一个ViewController,iphone,objective-c,ios,Iphone,Objective C,Ios,我正在尝试使用应用程序中的等待对话框 我的应用程序中有一个按钮。当用户单击它时,我们导航到另一个viewController: UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; ViewController2 *yourViewController = (ViewController2 *)[storyboard instantiateViewControllerW
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
ViewController2 *yourViewController = (ViewController2 *)[storyboard instantiateViewControllerWithIdentifier:@"FavoritePage"];
[self.navigationController pushViewController:yourViewController animated:YES];
正如您所知,它也可以从界面生成器
中设置
问题是,在加载下一页之前需要一段时间,我想在此期间显示一个等待对话框:
- (IBAction)navigation:(id)sender {
[MBProgressHUD showHUDAddedTo:self.view animated:YES];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
ViewController2 *yourViewController = (ViewController2 *)[storyboard instantiateViewControllerWithIdentifier:@"FavoritePage"];
[self.navigationController pushViewController:yourViewController animated:YES];
}
但它不起作用
当我删除与导航相关的代码并仅使用此代码时:
[MBProgressHUD showHUDAddedTo:self.view animated:YES];
等待对话框将显示,但当我使用导航代码和此行时,等待对话框将不显示,导航将正常工作
我怎样才能让他们一起工作
只想添加它来隐藏等待对话框,我还有:
- (void) viewDidDisappear:(BOOL)animated {
[MBProgressHUD hideHUDForView:self.view animated:YES];
}
我认为问题出在您的
-(iAction)导航:(id)发送方{}
因为您首先显示MBProgressHUD
,然后按下ViewController2
。因此,MBProgressHUD
已经显示出来,但随着它的出现,它也将进入新的视图
如果要显示等待标志,则可以使用带计时器的MBProgressHUD
。将计时器设置为1.0或2.0秒。然后调用导航方法。使计时器失效并卸下MBProgressHUD
或者,你可以使用
[[NSNotificationCenter defaultCenter]添加观察者:自选择器:@selector(yourMethod)名称:@“notificationName”对象:nil]代码>
在“-(iAction)导航中:(id)发送方{}
并从另一个视图调用此NSNotification
,如[[NSNotificationCenter defaultCenter]postNotificationName:@“notificationName”对象:nil];
`我认为问题出在您的-(iAction)导航:(id)发送方{}
因为您首先显示MBProgressHUD
,然后按下ViewController2
。因此,MBProgressHUD
已经显示出来,但随着它的出现,它也将进入新的视图
如果要显示等待标志,则可以使用带计时器的MBProgressHUD
。将计时器设置为1.0或2.0秒。然后调用导航方法。使计时器失效并卸下MBProgressHUD
或者,你可以使用
[[NSNotificationCenter defaultCenter]添加观察者:自选择器:@selector(yourMethod)名称:@“notificationName”对象:nil]代码>
在“-(iAction)导航中:(id)发送方{}
并从另一个视图调用此NSNotification
,如[[NSNotificationCenter defaultCenter]postNotificationName:@“notificationName”对象:nil];
`而不是
- (IBAction)navigation:(id)sender {
[MBProgressHUD showHUDAddedTo:self.view animated:YES];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
ViewController2 *yourViewController = (ViewController2 *)[storyboard instantiateViewControllerWithIdentifier:@"FavoritePage"];
[self.navigationController pushViewController:yourViewController animated:YES];
}
试试看
或者,您需要在ViewController2
的视图中添加showHUDAddedTo
方法。而不是
- (IBAction)navigation:(id)sender {
[MBProgressHUD showHUDAddedTo:self.view animated:YES];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
ViewController2 *yourViewController = (ViewController2 *)[storyboard instantiateViewControllerWithIdentifier:@"FavoritePage"];
[self.navigationController pushViewController:yourViewController animated:YES];
}
试试看
或者,您需要在ViewController2
的视图中添加showhuddedto
方法。是的,这是可能的,但当我单击按钮时,需要几秒钟才能导航到其他页面。(因为它开始从云读取数据)。所以我看到的是几秒钟内的第一页。我想在那里添加ProgressHUD。当第二个页面加载时,不需要显示等待对话框。有没有办法在iPhone中使用某种异步任务?(这在Android中是可能的)在这种情况下,你需要将它添加到self.navigationController.view而不是你的viewcontroller.view,我想。谢谢你的观点。这是有用的。我认为这是您的正确答案:self.navigationController.views是的,这是可能的,但当我单击按钮时,需要几秒钟才能导航到其他页面。(因为它开始从云读取数据)。所以我看到的是几秒钟内的第一页。我想在那里添加ProgressHUD。当第二个页面加载时,不需要显示等待对话框。有没有办法在iPhone中使用某种异步任务?(这在Android中是可能的)在这种情况下,你需要将它添加到self.navigationController.view而不是你的viewcontroller.view,我想。谢谢你的观点。这是有用的。我认为这是您的正确答案:self.navigationController.view您关于调用计时器的建议不太好。我不打算让应用程序更耗时。您关于使用NSNotification
的建议很好。但问题是我用的是故事板。我无法使通知以我想要的方式工作。你实施过这样的事情吗?还是仅仅是猜测?如果你有经验,请分享更多的代码。(只想补充一点,我知道如何使用通知,但我们如何使它与ProgressDialog一起工作?@Ali我没有在故事板中使用NSNotification
。)。。。。但正如您所说的定时器,我认为它不会耗费时间或加载应用程序。它创建自己的线程,并单独操作。完成后,使计时器失效。因此,在我看来,您至少可以尝试一下NSTimer scheduleTimer…..
。:)顺便说一句,谢谢您与我分享您的想法+1分。你关于呼叫计时器的建议不好。我不打算让应用程序更耗时。您关于使用NSNotification
的建议很好。但问题是我用的是故事板。我无法使通知以我想要的方式工作。你实施过这样的事情吗?还是仅仅是猜测?如果你有经验,请分享更多的代码。(只想补充一点,我知道如何使用通知,但我们如何使它与ProgressDialog一起工作?@Ali我没有在故事板中使用NSNotification
。)。。。。但正如您所说的定时器,我认为它不会耗费时间或加载应用程序。它创建自己的线程,并单独操作。完成后,使计时器失效。因此,在我看来,您至少可以尝试一下NSTimer scheduleTimer…..
。:)顺便说一句,谢谢您与我分享您的想法+1分。