didAddSubview 未被调用

didAddSubview not being called

我的 didAddSubview 没有被调用。

这就是我正在做的。

在我的viewController

- (void)viewDidLoad {
    [super viewDidLoad];
  SomeView *view = [[SomeView alloc] initWithFrame:CGRectMake(0.0, 0.0,    CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame))];
  [self.view addSubview:view];
}

我的 SomeView 是一个 UI 视图(.h 文件)

#import <UIKit/UIKit.h>

@interface DyteMeetingView : UIView
@end

其中我有 didAddSubview 这样的

- (void)didAddSubview:(UIView *)subview{
    [super didAddSubview:subview];
    [self someFunc];
}

我将调试器放在 didAddSubview 中,但调试器从未到达此处,因此也未调用 [self someFunc];

由于 didAddSubview 是 UI 视图的生命周期方法,我也不会从任何地方调用它。

谁能帮我弄清楚我错过的概念on/what我可能做错了吗?

PS: 我没有 UIView 的 xib 文件。

PS:有意添加 swift 标记,因为没有大块代码,我相信 swift 开发人员能够理解 question/code 或许可以帮助我。

didAddSubview in SomeView 将在将子视图添加 SomeView 的实例时调用,但事实并非如此你在这里做什么。您正在添加 SomeView 作为另一个视图的子视图。

你想要didMoveToSuperview;在此方法中,您可以使用 selfsuperview 属性 来识别它移动到的视图。

didAddSubview 将在 viewController.view 中调用,而不是您的 SomeView,因为您使用 viewController.view.addSubview(subview)