![]() |
1
10
通常,当您手动处理视图层次时,您不会得到
当您自己将视图添加到层次结构中时,它可能在屏幕上,也可能不在屏幕上,也可能不在屏幕上。
|
![]() |
2
3
您应该注意的第一件事是,viewdidAppear是uiviewController的一种方法,而不是uiview的一种方法,它实际上与视图无关。 第二件事是一次只能有一个“活动”的uiviewcontroller。 当您将“a”的视图添加到窗口中时,它将成为活动的uiviewController,只有“a”将收到viewDidAppear消息,而“e”实际上不会获得任何uiviewController相关的方法(viewDidAppear、viewWillAppear等)。 正如@noah在使用pushviewcontroller时提到的那样,您将收到这些消息,因为该方法会导致推送的视图控制器成为“活动”的uiviewcontroller。 我对您的建议是,如果您为子视图的视图创建控制器,而不是子类uiviewcontroller,而是nsObject,那么它将减少您的混淆级别,因为您不会期望调用uiviewcontroller方法,而这些方法无论如何都不会调用。 |
![]() |
3
1
当我设置导航控制器的代理时,也遇到了类似的问题。所以在我的uinavigationControllerDelegate方法中,我做了如下操作:
|
![]() |
user2606782 · 限制子视图在superview边界内的移动 7 年前 |