2011-11-30 81 views
3

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

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

回答

2

我已经想出了一个简单的解决方案。我只是简单地取消了在界面生成器中为表格视图所包含的UINavigationController的“显示导航栏”。然后我使用UINavigationBar复制外观(但能够按照我的喜好添加和删除按钮)。

之后,我刚刚创建了IBAction,我连接到按钮,并可以从那里控制一个整数值。 (P.S.唯一的问题是,XCode接口生成器中没有'后退'按钮,指向箭头的形状是很多人都知道的,有些解决方案很容易找到,如果你搜索的话)。

0

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

+0

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

1

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

+0

它实际上是一个用作DetailViewController的UIViewController。显示在屏幕上的导航栏是从TableViewController中推入详细视图时自动出现的导航栏(我是否有意义?)。我不知道如何影响自动从表格视图弹出的导航栏... – MillerMedia

+0

@MxmastaMills如果您使用'[self.navigationController pushViewController:someViewController];'或类似的代码,工作时有一个UINavigationController 。尝试覆盖此方法,看看会发生什么。 – PengOne

+0

我是否需要将Detail View Controller更改为UINavigationController才能?现在它是一个UIViewController(即使你刚才提到的那个方法确实被调用了)... – MillerMedia

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

实际上这个方法属于 pbibergal

相关问题