12

我在详细视图控制器中有以下代码:

- (void)viewWillLayoutSubviews {
    [super viewWillLayoutSubviews];
    [self configureView];
}

当我在 的第一行使用断点继续使用此视图控制器时-configureView,它似乎[self configureView]被调用了两次。然而:

  • 两次命中该方法时,堆栈如下所示:

堆

  • 当我[self configureView]在上面的代码中评论时,它被命中零次。
  • 很明显,堆栈两次都相同,-configureView不会递归调用自身。
  • -configureView仅在上述代码中调用。
4

2 回答 2

11

来自苹果的文档

viewWillLayoutSubviews 方法也会在视图被其父级调整大小和定位后调用。

viewWillLayoutSubviews每当控制器视图发生更改时都会调用Given bounds,但不能保证它只会被调用一次。例如,每当发生旋转时都会调用它。

根据Hermann 的建议,您的configureView方法可能更好地从其他地方调用,也许是 in viewWillAppearviewDidAppear甚至是 item 的自定义 mutator 。BirdDetail

于 2013-02-18T23:28:03.243 回答
1

如果您遵循通常的模式,那么 configureView 会在detailItem. 检查设置方法。并且[detailViewController setDetailItem:something]经常被调用prepareForSegue:

关键是:重要吗?

于 2013-02-18T22:47:28.150 回答