【问题标题】:Strange behavior of NavigationBar after multiple push and pop with animation NO. iOS7多次推送和弹出动画 NO 后导航栏的奇怪行为。 IOS 7
【发布时间】:2013-11-20 01:46:20
【问题描述】:

在 UINavigationController 上以编程方式执行多个弹出和推送操作时出现问题,动画 NO。 (仅限 iOS7 iPhone)

源代码 https://github.com/abhishek9284/NavigationBarTest

要了解问题,请考虑以下视图树。
(我在我的应用程序中使用 UITableViewController)
右键单击并选择在新标签中打开图片以查看大图。

错误信息
右键单击并选择在新标签中打开图片以查看大图。

执行以下导航时出现错误/问题。

  1. 手动逐一推送视图并转到 D 视图
    PUSH:根>字母>A>B>C>D)
  2. 使用 popToViewController 以编程方式一次弹出多个视图并返回根视图
    (POP : Root
  3. 以编程方式推送并转到 2 视图
    (PUSH : 根 > 数字 > 1 > 2)

在上面的第 2 步和第 3 步中,使用动画 NO 以编程方式弹出和推送完成,这使得 UINavigationBar 后退按钮和标题非常奇怪。

注意:上述问题仅在 iOS 7 中出现,并且在 iOS 6 中完美运行。

【问题讨论】:

  • 我不清楚到底是什么问题。
  • 你能上传一张奇怪的图片吗?
  • @nhgrif 添加了代码链接和应用程序图像以便更好地理解。
  • @JuJoDi 添加了代码链接和应用程序图片以便更好地理解。

标签: ios uinavigationcontroller uinavigationbar pushviewcontroller popviewcontroller


【解决方案1】:

★☆★ 已解决 ★☆★

问题原因

  • -(void)viewDidAppear:(BOOL)animated 方法中执行 push 或 pop 会使导航堆栈不稳定。

解决方案

  • 为推送或弹出相关进程创建单独的方法,并从另一个视图控制器调用该方法(避免在内部推送或弹出 -(void)viewDidAppear:(BOOL)animated)

  • push 操作后调用方法[self.navigationController.view layoutSubviews]; 布局子视图。

【讨论】:

    【解决方案2】:

    为了技术准确性,不应直接调用 layoutSubviews,即使它确实有效。查看 Apple 文档了解更多信息。

    【讨论】:

      猜你喜欢
      • 2018-09-25
      • 1970-01-01
      • 2019-03-27
      • 2017-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多