影响UINavigationBar的返回按钮方法(iOS)

3
我有一个表格视图,可以推出详细视图控制器。从详细视图控制器开始,当我按“返回”按钮时,我希望整数值发生更改。如何以编程方式编辑导航栏返回按钮的操作。由于我使用表格视图,所以后退按钮会自动放置在我的应用程序中,因此我实际上没有创建该按钮,因此不知道如何影响它的方法。
明确一下,我仍然希望返回按钮回到原始视图,同时更改整数值。谢谢!
4个回答

4

感谢 PengOne 指引我朝这个方向前进。 在头文件中加入 UINavigationBarDelegate 并在 .m 文件中使用:

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

1
实际上,这个方法属于<UINavigationBarDelegate>。 - pbibergal

2
我已经找到了一个简单的解决方法。我只需在包含表视图的UINavigationController的Interface Builder中取消选中“显示导航栏”即可。然后,我使用UINavigationBar来复制外观(但可以随意添加和删除按钮)。
之后,我只需创建IBAction并将其连接到按钮上,就可以从那里控制整数值。
(附言:这种方法唯一的问题是,在XCode界面构建器中没有“返回”按钮左指向箭头形状,正如你们许多人所知道的那样。如果你搜索,会很容易找到解决方案)。

1
如果您正在使用UINavigationController,那么UINavigationBarDelegate是委托类,并且它实现了-navigationBar:shouldPopItem。您可以在该方法中放置您想要触发的操作,例如增加或减少计数器。

实际上,一个UIViewController被用作DetailViewController。屏幕上显示的导航栏是当您从TableViewController中推送详细视图时自动出现的那个(我说得通吗?)。我不知道如何影响从表视图自动弹出的那个导航栏... - MillerMedia
如果你正在使用 [self.navigationController pushViewController:someViewController]; 或类似的代码,那么工作中可能会有一个 UINavigationController。尝试重写这个方法并查看发生了什么。 - PengOne
我需要将详细视图控制器更改为UINavigationController吗?现在它是一个UIViewController(即使确实调用了您刚提到的方法)... - MillerMedia

0
你可以尝试实现viewDidDisappear方法,该方法应在详细视图控制器的视图不再可见时被调用。

详细视图控制器实际上可以前进和后退(到第二个详细视图控制器,然后返回到表视图控制器)。因此,在这种情况下,viewDidDisappear 对我来说不起作用,因为如果他们决定向前点击到第二个视图控制器,它会改变整数的值。我只想在返回时更改整数。这有意义吗? - MillerMedia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接