【问题标题】:IOS/Objective-C/Storyboard: Detect when show segue underwayIOS/Objective-C/Storyboard: 检测何时进行显示 segue
【发布时间】:2019-02-13 19:53:22
【问题描述】:

我在情节提要中使用标准的“显示”segue 在两个视图控制器之间进行转换。

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

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

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

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

【问题讨论】:

    标签: ios objective-c storyboard


    【解决方案1】:

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

    【讨论】:

    • 我使用了一个轻微的变化。我在第二个视图控制器 _showProgress 中放置了一个布尔值 ivar,并在第一个视图控制器的 prepareforsegue 中将其设置为 FALSE,并将该方法设置为布尔值。然后我将第二个 viewdidappear 中的布尔值重置为 TRUE。
    猜你喜欢
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 2012-08-18
    • 2023-03-22
    • 2016-08-25
    相关资源
    最近更新 更多