viewDidAppear:在某些条件下不开火?

Jaa*_*nus 5 iphone cocoa-touch uiviewcontroller

我的app nib中有以下项目:

  • 通常:文件的所有者,第一响应者窗口,委托
  • 查看控制器"a"
    • 查看"b"
      • UIScrollView"c"
      • "b"中的其他一些东西

在我的AppDelegate applicationDidFinishLaunching中,我这样做:

  1. [window makeKeyAndVisible]
  2. [window addSubView:a.view];
  3. 创建一个视图控制器"d"
  4. 用rootviewcontroller"d"创建一个navigationController"e"
  5. 调用[c addSubView:e.view]

问题/问题:当我执行以上所有操作时,viewDidAppear:不会触发"d".(但是viewDidLoad正在开火.)我怎样才能找出它为什么没有射击,并修复它以便射击?

(为什么我要使用viewDidAppear:上面涉及一些链式动画,viewDidAppear看起来像一个视图控制器知道何时加载和动画视图的好地方,因此它可以触发后续动画.)

Noa*_*oon 10

通常,当你手动视图层次拧你不会得到-viewWillAppear:,-viewDidAppear等; 他们通过各种SDK方法,如所谓的-pushViewController:animated:,-presentModalViewController:animated:以及通过UITabBarController当标签被选中.

当您自己向层次结构添加视图时,它可能在屏幕上,也可能不在屏幕上; 该-addSubview:方法不会对您的意图做出任何假设.只需在添加视图时自己打电话给他们.