ite*_*ter 12 iphone cocoa-touch
我有一个导航控制器.其中一个视图在其中添加了自定义子视图viewDidAppear:.我注意到在启动应用程序后第一次导航到此视图控制器的实例时,会viewDidAppear:调用两次.如果我将此视图从堆栈中弹出并再次导航到它,则viewDidAppear:每个外观仅调用一次.所有后续外观都会调用viewDidAppear:一次.
对我来说问题是,当我第一次看到这个视图时,我最终会得到两倍的子视图.我通过引入一个标志变量或其他一些来解决这个问题,但是我想了解发生了什么,以及在这种情况下我怎么得到两次调用.
Lil*_*ard 18
你永远不应该依赖-viewWillAppear:/ -viewDidAppear:被称为与消失的变体适当平衡.虽然系统视图控制器会尽力做到最好,但他们总能正确地对调用进行括号,我不知道他们是否能够保证它,当然在使用自定义视图控制器时,您可以找到可以多次调用它们的情况.
简而言之,您的-viewWillAppear:/ -viewDidAppear:方法应该是幂等的,这意味着如果-viewDidAppear:在控制器上连续两次调用它,它应该表现正常.如果你想加载自定义视图,你可能想要这样做,-viewDidLoad然后简单地把屏幕上(如果它们还没有)放入-viewDidAppear:.
您还可以在-viewDidAppear:方法中放置一个断点,以查看它第一次出现时被调用两次的原因.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           13601 次  |  
        
|   最近记录:  |