【问题标题】:iPhone, addSubView doesn't call willViewAppear?iPhone,addSubView 不调用 willViewAppear?
【发布时间】:2010-10-17 10:55:17
【问题描述】:

我正在使用-addSubView 添加一个视图。我也在其他地方使用视图和presentModalViewController

-viewWillAppear 是用 presentModalViewController 调用的,但不是用 addSubView 调用的。

毫无疑问,这是显而易见的事情?

【问题讨论】:

    标签: iphone xcode


    【解决方案1】:

    viewWillAppear: 由父视图控制器在呈现另一个视图控制器时调用(例如,pushViewController:animated:presentModalViewController:animated:)。手动调用addSubview:时永远不会调用它。

    【讨论】:

      【解决方案2】:

      上面的答案似乎并不正确,无论如何在 iOS 6.1 中。当我使用这样的控制器创建视图时:

          self.welcomeController = [[DPLWelcomeViewController alloc] initWithNibName:@"DPLWelcomeViewController" bundle:nil];
          self.welcomeController.view.frame = self.window.screen.applicationFrame;
          self.welcomeController.delegate = self;
          [self.window.rootViewController.view addSubview:self.welcomeController.view];
      

      -viewWillAppear 确实被调用(只要 self.welcomeController 是一个强属性)。

      另一方面,当我这样做时:

          DPLWelcomeViewController *welcomeController = [[DPLWelcomeViewController alloc] initWithNibName:@"DPLWelcomeViewController" bundle:nil];
          welcomeController.view.frame = self.window.screen.applicationFrame;
          welcomeController.delegate = self;
          [self.window.rootViewController.view addSubview:welcomeController.view];
      

      一旦此方法退出,ARC 就会对其进行清理,据我所知,-viewWillAppear 被发送到 nil。 (尽管我可以在屏幕上看到 Welcome 视图——我相信 rootViewController.views 保留了 view,但没有保留 viewController。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-15
        • 1970-01-01
        • 2012-04-25
        • 1970-01-01
        相关资源
        最近更新 更多