【问题标题】:Affecting a UINavigationBar's Back Button Method (iOS)影响 UINavigationBar 的后退按钮方法 (iOS)
【发布时间】:2012-01-10 02:58:39
【问题描述】:

我有一个推送到详细视图控制器的表格视图。在详细视图控制器中,当我按下“后退”按钮时,我想要一个整数值来改变。如何以编程方式编辑导航栏后退按钮的操作。后退按钮会自动放置在我的应用中,因为我使用的是表格视图,所以我实际上并没有创建按钮,所以我不知道如何影响它的方法。

需要明确的是,我仍然希望后退按钮返回到原始视图,但同时更改整数的值。谢谢!

【问题讨论】:

    标签: ios xcode uitableview uinavigationbar back-button


    【解决方案1】:

    感谢 PengOne 为我指明了这个方向。 在头文件中添加UINavigationBarDelegate,并在.m文件中使用:

    - (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem     *)item
    {
      //insert your back button handling logic here
      // let the pop happen
      return YES;
    }     
    

    【讨论】:

    • 其实这个方法属于
    【解决方案2】:

    我想出了一个简单的解决方法。我只是在界面构建器中为包含表视图的 UINavigationController 取消选中“显示导航栏”。然后我使用 UINavigationBar 来复制外观(但可以随意添加和删除按钮)。

    之后我刚刚创建了 IBAction,我连接到按钮并可以从那里控制一个整数值。

    (PS 唯一的问题是在 XCode 界面构建器中没有“返回”按钮向左箭头形状,正如你们许多人所知。如果您搜索,很容易找到围绕此的解决方案)。

    【讨论】:

      【解决方案3】:

      如果您使用UINavigationController,则UINavigationBarDelegate 是委托类,它实现-navigationBar:shouldPopItem。您可以将要触发的操作放入该方法中,例如递增或递减计数器。

      【讨论】:

      • 它实际上是一个 UIViewController,它被用作 DetailViewController。屏幕上显示的导航栏是当您从 TableViewController 推入详细视图时自动出现的导航栏(我说得通吗?)。我不知道如何影响从表格视图中自动弹出的导航栏...
      • @MxmastaMills 如果您使用[self.navigationController pushViewController:someViewController]; 或类似代码,则有一个 UINavigationController 在工作。尝试覆盖此方法,看看会发生什么。
      • 我需要将详细视图控制器更改为 UINavigationController 吗?现在它是一个 UIViewController(尽管你刚才提到的那个方法确实被调用了)......
      【解决方案4】:

      您可以尝试实现 viewDidDisappear,它应该在详细视图控制器的视图消失时调用。

      【讨论】:

      • 详细视图控制器实际上向前和向后移动(到第二个详细视图控制器并返回到表视图控制器)。所以 viewDidDisappear 在这种情况下对我来说不起作用,因为如果他们决定向前点击到第二个视图控制器,它会改变整数的值。我只希望整数在返回时改变。这有意义吗?
      猜你喜欢
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 2011-01-04
      • 2011-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多