当我从查看控制器A 转到查看控制器B 时,如何在出现segue之前加载我的UIAlertView? UIAlertView似乎只是在下一个屏幕中加载......
我尝试在
中实现UIAlertView- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
部分,但我无法得到结果。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"report"])
{
[self loadingData];
}{
[self retrieveData];
NSIndexPath *indexPath = [self.myTableView indexPathForSelectedRow];
Company *currentStore = [arrayOfStore objectAtIndex:indexPath.row];
ReportsViewController *destinationVC = [segue destinationViewController];
destinationVC.name = name;
self loadingData是我的UIAlertView void语句。感谢任何建议。
答案 0 :(得分:1)
不要马上调用你的segue。当用户操作发生时(在表视图中选择一行?),然后显示警报视图。将自己设置为警报的代表。调用警报视图委托的alertView:clickedButtonAtIndex:
方法时,请确保用户单击了正确的按钮,然后使用performSegueWithIdentifier:sender:
方法在代码中调用您的segue。
答案 1 :(得分:1)
一种方法是通过重新编写流程,如下所示:使ViewControllerA成为您正在显示的UIAlertView的委托,然后使用alertView Delegate调用来执行segue。你可以这样做:
首先在Storyboard中的2个ViewControllers 之间创建一个segue ,我将其称为toViewController2:
现在转到ViewController 1的.m文件,使其成为UIViewController委托:
#import "ViewController.h"
@interface ViewController () <UIAlertViewDelegate>
在tableView的didSelect方法中创建一个alertView(带委托:self ):
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"Loading" message:@"Please wait while loading" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil]; // build the alertview
[alertView show]; // show the alertview
}
单击alertView上的按钮时,将调用performSegue:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
[self performSegueWithIdentifier:@"toViewController2" sender:nil]; // perform segue after cancelbutton was pressed on alertview
}
最后,在您的alertView:
之后调用performSegue方法-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"toViewController2"])
{
// Do stuff AFTER the alertview button is pressed
}
}
我不是分段教程或解释的粉丝,所以这就是一起:
答案 2 :(得分:0)
有两种方法可以做到这一点 -
在您的方法prepareForSegue中 - 首先显示警告框,然后在用户点击“完成”或“确定”按钮时执行segue。
使用委托 - 将“self”作为警报视图的委托,当用户点击警报视图时,使用委托方法,该方法在您所在的视图控制器类中实现, call performWithSegue。