我的应用中有-[self performsSegueWithIdentifier:..]
方法。点击" GO"键盘上的按钮。由于此时正在调用API,因此加载数据大约需要5秒钟。所以,我在-endEditing
之后添加了-buttonAction
命令。我还放了一个ActivityIndicator。我尝试了两种方法。
1
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
dispatch_async(queue, ^{
[self performSegueWithIdentifier:@"toSecond" sender:self];
});
2
dispatch_async(dispatch_get_main_queue(), ^(void){
[self performSegueWithIdentifier:@"toSecond" sender:self];
});
在第一种方法中,我让键盘消失,ActivityIndicator开始制作动画。但是移动到下一个ViewController大约需要20秒(我已经检查过断点:应用程序从-prepareForSegue:
中的最后一个命令移动到下一个ViewController中的第一个命令的时间大约是15-18秒) 。
在第二种方法中,转换不需要任何时间,但-shouldEndEditing
部分和-startAnimating
部分未被执行。
答案 0 :(得分:1)
试试这个:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 5 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[self performSegueWithIdentifier:@"toSecond" sender:self];
});