【发布时间】:2011-05-28 23:14:35
【问题描述】:
有没有类似于UIViewController 的viewDidLoad 的UIView?
我需要在 UIView 加载后立即收到通知(UIView 的子类),并执行一些操作。
【问题讨论】:
标签: ios objective-c iphone uiview viewdidload
有没有类似于UIViewController 的viewDidLoad 的UIView?
我需要在 UIView 加载后立即收到通知(UIView 的子类),并执行一些操作。
【问题讨论】:
标签: ios objective-c iphone uiview viewdidload
根据您需要执行的操作类型,有几种技巧:
-(id)initWithFrame:(CGRect)frame - UIView 的指定
初始化器;总是发送到一个 UIView 来初始化它,除非
视图是从笔尖加载的;-(id)initWithCoder:(NSCoder *)coder - 每当从 nib 加载视图时,总是发送来初始化 UIView;-(void)awakeFromNib - 在 nib 中的所有对象都初始化并连接后发送;仅当您从笔尖加载对象时才适用;你必须打电话给super;-(void)willMoveToSuperview:(UIView *)newSuperview - 在视图作为子视图添加到另一个视图之前立即发送; newSuperview 从父视图中移除视图时可能为 nil;-(void)willMoveToWindow:(UIWindow *)newWindow - 在视图(或其父视图)添加到窗口之前立即发送;当您从窗口中移除视图时,newWindow 可能为 nil;-(void)didMoveToSuperview - 在视图插入视图层次结构后立即发送;-(void)didMoveToWindow - 在视图设置其窗口属性后立即发送。 -基本上,您可以选择在初始化期间(1 和 2)、从 nib 加载之后(3)、插入视图层次结构之前(4 和 5)以及之后(6 和 7)执行您的操作。
【讨论】:
-(void)willMoveToSuperview:(UIView *)newSuperview 解决了我所有的问题,非常感谢!