1

我遇到了结合 popToRootViewController 和 NavigationControllerDelegate 的奇怪崩溃。Storyboard 中创建了 3 个 tableViewController。RootViewController - secondViewController - ThirdViewController 然后我想在 ThirdViewController 上弹出ToRootViewController。弹出工作正常,但会立即崩溃或在 RootView 上点击其他内容时崩溃。我发现 NavigationController 的 childViewControllers 在 popToRootViewController 之后为 0 但是当一个一个弹出后退按钮时,它不会崩溃。

当我禁用 NavigationController 的委托时,它解决了崩溃并且 childViewControllers 不会为 0。但是我需要 NavigationController 委托来禁用我用来验证用户输入的文本字段委托。(即,如果用户将强制文本字段留空,navigationController 的委托将在推送/弹出视图之前禁用文本字段委托,以避免文本字段委托触发 alertView,这可以正常工作)。

这是显示 childViewControllers 计数 = 0 的 NSLog 输出。当弹出/推送视图时,我正在计算 childViewControllers 的数量。

应用启动时(viewdDidAppeared 中的 NSLog)

2013-06-11 13:05:29.287 MyApp[1389:c07] Childviewcontrollers in Root's viewDidAppear = 1
2013-06-11 13:05:29.289 MyApp[1389:c07] Childviewcontrollers in Root's viewDidAppear = (
   "<RootViewController: 0x83239d0>"
)

将根推到第二

2013-06-11 13:05:41.955 MyApp[1389:c07] delegate enabled
2013-06-11 13:05:41.956 MyApp[1389:c07] childviewcontrollers count in SecondViewController's NavControlDelegate 2
2013-06-11 13:05:41.956 MyApp[1389:c07] childviewcontrollers in SecondViewController's NavControlDelegate (
    "<RootViewController: 0x83239d0>",
    "<SecondViewController: 0xfb0ee60>"
)
2013-06-11 13:05:42.322 MyApp[1389:c07] childviewcontrollers count in Second's ViewDidAppear 2
2013-06-11 13:05:42.322 MyApp[1389:c07] childviewcontrollers in Second's ViewDidAppear (
    "<RootViewController: 0x83239d0>",
    "<SecondViewController: 0xfb0ee60>"
)

第二至第三

2013-06-11 13:05:51.945 MyApp[1389:c07] childviewcontrollers count in SecondViewController's NavControlDelegate 3
2013-06-11 13:05:51.945 MyApp[1389:c07] childviewcontrollers in SecondViewController's NavControlDelegate (
    "<RootViewController: 0x83239d0>",
    "<SecondViewController: 0xfb0ee60>",
    "<ThirdViewController: 0x832f050>"
)
2013-06-11 13:05:52.302 MyApp[1389:c07] childviewcontrollers count in Third's ViewDidAppear 3
2013-06-11 13:05:52.303 MyApp[1389:c07] childviewcontrollers in Third's ViewDidAppear (
    "<RootViewController: 0x83239d0>",
    "<SecondViewController: 0xfb0ee60>",
    "<ThirdViewController: 0x832f050>"

第三个上的 popToRootViewController。

2013-06-11 13:06:02.284 MyApp[1389:c07] Delegate disabled
2013-06-11 13:06:02.284 MyApp[1389:c07] childviewcontrollers in SecondViewController's NavControlDelegate 0
2013-06-11 13:06:02.284 MyApp[1389:c07] childviewcontrollers in SecondViewController's NavControlDelegate (null)

但是 RootViewController 是新创建的?但无论如何它都会崩溃。

2013-06-11 13:06:02.642 MyApp[1389:c07] Childviewcontrollers in Root's viewDidAppear = 1
2013-06-11 13:06:02.642 MyApp[1389:c07] Childviewcontrollers in Root's viewDidAppear = (
    "<RootViewController: 0x83239d0>"
)

作为参考,下面是我禁用 navigationController 的委托时的日志。如果对解决此问题有任何建议,将不胜感激。

2013-06-11 13:07:06.349 MyApp[1412:c07] Childviewcontrollers count in Root's viewDidAppear = 1
2013-06-11 13:07:06.350 MyApp[1412:c07] Childviewcontrollers in Root's viewDidAppear = (
    "<RootViewController: 0x8184680>"
)
2013-06-11 13:07:08.265 MyApp[1412:c07] delegate enabled
2013-06-11 13:07:08.632 MyApp[1412:c07] childviewcontrollers count in Second's ViewDidAppear 2
2013-06-11 13:07:08.632 MyApp[1412:c07] childviewcontrollers in Second's ViewDidAppear (
    "<RootViewController: 0x8184680>",
    "<SecondViewController: 0xa969ca0>"
)
2013-06-11 13:07:15.442 MyApp[1412:c07] childviewcontrollers count in Third's ViewDidAppear 3
2013-06-11 13:07:15.443 MyApp[1412:c07] childviewcontrollers in Third's ViewDidAppear (
    "<RootViewController: 0x8184680>",
    "<SecondViewController: 0xa969ca0>",
    "<ThirdViewController: 0x74a6a30>"
)
2013-06-11 13:07:18.994 MyApp[1412:c07] Childviewcontrollers count in Root's viewDidAppear = 1
2013-06-11 13:07:18.994 MyApp[1412:c07] Childviewcontrollers in Root's viewDidAppear = (
    "<RootViewController: 0x8184680>"
)

问候,

4

0 回答 0