首页 > 解决方案 > IOS/Objective-C/Storyboard: 检测何时进行显示 segue

问题描述

我在故事板中使用标准的“显示”segue 在两个视图控制器之间进行转换。

在第二个 VC 中,有一种方法viewWillAppear可以触发在 segue 期间出现的进度条并破坏其外观。

有什么方法可以检测到 segue 正在进行中,以便我可以将进度条延迟到 segue 完成之后?

我知道我可以将进度条移动到第二个视图控制器生命周期的稍后时间点,例如,viewDidAppear但在大多数情况下,没有这个特定的 segue 就可以到达 VC,我希望进度条立即触发。但是,如果在转场中,我想推迟它。

注意:这些是在 Storyboard 中带有动画的花园综艺节目 Segues,而不是自定义 segues。

标签: iosobjective-cstoryboard

解决方案


您可以定义一个公共方法来触发进度条并从第一个 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

推荐阅读