在Objective-C中,想要在外部得知ViewController调用viewWillAppear方法的时机,可以通过以下两种方式实现:

  1. 使用KVO观察viewWillAppear方法的调用:

    • 在需要观察的类中添加观察者,并在viewWillAppear方法中发送通知:
      - (void)viewWillAppear:(BOOL)animated {
          [super viewWillAppear:animated];
          [[NSNotificationCenter defaultCenter] postNotificationName:@"ViewControllerWillAppearNotification" object:nil];
      }
      
    • 在外部的类中添加观察者,观察ViewControllerWillAppearNotification通知:
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(viewControllerWillAppear:) name:@"ViewControllerWillAppearNotification" object:nil];
      
    • 在观察者类中实现viewControllerWillAppear:方法,该方法会在viewWillAppear方法调用时被调用:
      - (void)viewControllerWillAppear:(NSNotification *)notification {
          // 在这里处理viewWillAppear方法调用的逻辑
      }
      
  2. 使用代理模式:

    • 在ViewController类中定义一个代理协议,并声明一个代理属性:
      @protocol ViewControllerDelegate <NSObject>
      - (void)viewControllerWillAppear;
      @end
      
      @interface ViewController : UIViewController
      @property (nonatomic, weak) id<ViewControllerDelegate> delegate;
      @end
      
    • viewWillAppear方法中调用代理方法:
      - (void)viewWillAppear:(BOOL)animated {
          [super viewWillAppear:animated];
          if ([self.delegate respondsToSelector:@selector(viewControllerWillAppear)]) {
              [self.delegate viewControllerWillAppear];
          }
      }
      
    • 在外部的类中遵循代理协议,并实现代理方法,即可在viewWillAppear方法调用时被调用:
      @interface ExternalClass : NSObject <ViewControllerDelegate>
      @end
      
      @implementation ExternalClass
      - (void)viewControllerWillAppear {
          // 在这里处理viewWillAppear方法调用的逻辑
      }
      @end
      ``
      
oc中如何在外部得知viewcontroller调用viewWillAppear的时机

原文地址: http://www.cveoy.top/t/topic/hU48 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录