Uiview - How to Get Notified When the View Is Loaded

UIView - How to get notified when the view is loaded?

Depending on what kind of actions you need to perform, there are several techniques:

  1. -(id)initWithFrame:(CGRect)frame - UIView's designated
    initializer; always sent to a UIView to initialize it, unless the
    view is loaded from a nib;
  2. -(id)initWithCoder:(NSCoder *)coder - always sent to initialize a UIView whenever the view is loaded from a nib;
  3. -(void)awakeFromNib - sent after all the objects in the nib are initialized and connected; applicable only if you load the object from a nib; you must call super;
  4. -(void)willMoveToSuperview:(UIView *)newSuperview - sent immediately before the view is added as a subview to another view; newSuperview may be nil when you remove the view from its superview;
  5. -(void)willMoveToWindow:(UIWindow *)newWindow - sent immediately before the view (or its superview) is added to a window; newWindow may be nil when you remove the view from a window;
  6. -(void)didMoveToSuperview - sent immediately after the view is inserted into a view hierarchy;
  7. -(void)didMoveToWindow - sent immediately after the view gets its window property set. -

Basically, you can choose to perform your actions during initialization (1 & 2), after loading from a nib (3), before insertion into a view hierarchy (4 & 5) and after that (6 & 7).

UIView - How to get notified when the view is loaded?

Depending on what kind of actions you need to perform, there are several techniques:

  1. -(id)initWithFrame:(CGRect)frame - UIView's designated
    initializer; always sent to a UIView to initialize it, unless the
    view is loaded from a nib;
  2. -(id)initWithCoder:(NSCoder *)coder - always sent to initialize a UIView whenever the view is loaded from a nib;
  3. -(void)awakeFromNib - sent after all the objects in the nib are initialized and connected; applicable only if you load the object from a nib; you must call super;
  4. -(void)willMoveToSuperview:(UIView *)newSuperview - sent immediately before the view is added as a subview to another view; newSuperview may be nil when you remove the view from its superview;
  5. -(void)willMoveToWindow:(UIWindow *)newWindow - sent immediately before the view (or its superview) is added to a window; newWindow may be nil when you remove the view from a window;
  6. -(void)didMoveToSuperview - sent immediately after the view is inserted into a view hierarchy;
  7. -(void)didMoveToWindow - sent immediately after the view gets its window property set. -

Basically, you can choose to perform your actions during initialization (1 & 2), after loading from a nib (3), before insertion into a view hierarchy (4 & 5) and after that (6 & 7).

iphone UIView - Get notified when view has loaded?

There is no delegate method but you can override,

- (void)didAddSubview:(UIView *)subview{
}

Detect when the View has been (re)shown

viewDidAppear actually happens every time that view "appears", rather than just once on app load. For example, in an application that uses a UITabBarController, every time you press a tab, the view will switch to a specific view controller and the view controller's viewDidAppear method will get called.

To detect when the view appears from the background you need to register for notifications for applicationDidBecomeActive.

NotificationCenter.default.addObserver(self, selector: #selector(applicationDidBecomeActive), name: UIApplication.didBecomeActiveNotification, object: nil)

Exist way notify when custom UIView will be presented or removeFromSuperview()?

I'm not totally sure what you are asking. I think you're asking for a way to tell when your custom view is added as a subview of another view.

The easiest way to do that is to make your view a custom subclass of UIView, and implement didMoveToSuperview() or willMove(toSuperview:). Those methods get called when your view is added as a child view of another view.

If you really want to use the notification center you could have your custom view class broadcast a notification when it gets added to a superview.



Related Topics



Leave a reply



Submit