IOS/Objective-C/Storyboard: 显示 segue 正在进行时检测
IOS/Objective-C/Storyboard: Detect when show segue underway
我在故事板中使用标准 "show" segue 在两个视图控制器之间进行转换。
在第二个 VC 中,viewWillAppear
中有一个方法可以触发在 segue 期间出现并损坏其外观的进度条。
有什么方法可以检测到 segue 正在进行中,以便我可以将进度条延迟到 segue 完成之后?
我知道我可以将进度条移动到第二个视图控制器生命周期的稍后一点,例如 viewDidAppear
但在大多数情况下, VC 没有这个特定的 segue 和我希望进度条立即触发。但是,如果在 segue 中,我想延迟它。
注意:这些是 Storyboard 中带有动画的花园综艺节目转场,而不是自定义转场。
您可以定义一个 public 方法来触发进度条并从第一个 VC 开始调用它。
下面是这种方法的实现:
在 FirstVC.m
中:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// set segu identifier to SecondVC in StoryBoard
if ([segue.identifier isEqualToString:@"SecondVC"]) {
SecondVC *secondVC = (SecondVC *)segue.destinationViewController;
[secondVC fireProgressBar];
}
}
在SecondVC.h
中:
#import <UIKit/UIKit.h>
@interface SecondVC : UIViewController
-(void)fireProgressBar;
@end
在SecondVC.m
中:
#import "SecondVC.h"
@implementation SecondVC
- (void)viewDidLoad {
[super viewDidLoad];
}
-(void)fireProgressBar {
NSLog(@"Progress Bar Fired!!!");
}
@end
我在故事板中使用标准 "show" segue 在两个视图控制器之间进行转换。
在第二个 VC 中,viewWillAppear
中有一个方法可以触发在 segue 期间出现并损坏其外观的进度条。
有什么方法可以检测到 segue 正在进行中,以便我可以将进度条延迟到 segue 完成之后?
我知道我可以将进度条移动到第二个视图控制器生命周期的稍后一点,例如 viewDidAppear
但在大多数情况下, VC 没有这个特定的 segue 和我希望进度条立即触发。但是,如果在 segue 中,我想延迟它。
注意:这些是 Storyboard 中带有动画的花园综艺节目转场,而不是自定义转场。
您可以定义一个 public 方法来触发进度条并从第一个 VC 开始调用它。
下面是这种方法的实现:
在 FirstVC.m
中:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// set segu identifier to SecondVC in StoryBoard
if ([segue.identifier isEqualToString:@"SecondVC"]) {
SecondVC *secondVC = (SecondVC *)segue.destinationViewController;
[secondVC fireProgressBar];
}
}
在SecondVC.h
中:
#import <UIKit/UIKit.h>
@interface SecondVC : UIViewController
-(void)fireProgressBar;
@end
在SecondVC.m
中:
#import "SecondVC.h"
@implementation SecondVC
- (void)viewDidLoad {
[super viewDidLoad];
}
-(void)fireProgressBar {
NSLog(@"Progress Bar Fired!!!");
}
@end