UINavigationController后退按钮动作问题

Posted

技术标签:

【中文标题】UINavigationController后退按钮动作问题【英文标题】:UINavigationController back button action problem 【发布时间】:2011-09-24 16:04:47 【问题描述】:

我有一个 UINavigationController,第一个视图是 UIView。我设置了两个按钮,每个按钮都推动另一个视图,都是 UITableViewControllers。 第一个按钮工作得很好。问题是:当我在第二个 TableViewController 中并且我点击后退按钮时,它会尝试再次推送视图,并且只有第二次返回到主视图。 我也有一个 UITabBarController 设置,我注意到如果我在我的第一个选项卡中(主视图有两个按钮推动两个表格视图,并且恰好在第二个视图中)并且我点击另一个选项卡然后点击第一个选项卡 - 它向我展示了我的第一个 UITableViewController 的内容,当我点击返回时,它显示了第二个 UITableViewController(应该显示),并且只有在我第二次点击它时才会进入主视图。

不知道我刚才说的能不能理解,这里也是返回按钮的代码和它的动作:

- (void)viewDidLoad 
    [super viewDidLoad];
    UIButton *back= [UIButton buttonWithType:UIButtonTypeCustom];  
    UIImage *backImage = [[UIImage imageNamed:@"backb.png"]  
                          stretchableImageWithLeftCapWidth:10 topCapHeight:10];  
    [back setBackgroundImage:backImage forState:UIControlStateNormal];  
    [back addTarget:self action:@selector(cancel:)  
   forControlEvents:UIControlEventTouchUpInside];  
    back.frame = CGRectMake(0, 0, 37, 26);  
    UIBarButtonItem *cancelButton = [[[UIBarButtonItem alloc]  
                                      initWithCustomView:back] autorelease];  
    self.navigationItem.leftBarButtonItem = cancelButton;



-(IBAction)cancel:(id)sender  
    [self.navigationController popViewControllerAnimated:YES];  

第一个 UITableViewController 中的后退按钮设置相同并且工作正常...可能是什么问题?

我刚刚添加了另一个 UITableViewController,显然现在当我在第三个视图中并尝试返回主视图时,它会加载视图两次,第一个 UITableViewController 在返回之前...

【问题讨论】:

【参考方案1】:

您有可能按了第二个视图控制器两次。当您同时推送多个视图控制器实例时,您不会在推送动画中看到任何差异。看起来只有一个控制器被推送。这是因为您在前一个视图控制器完全推送之前推送了下一个视图控制器。

如果您两次推送第二个视图控制器,请检查您的代码。

【讨论】:

你说得对,我刚刚看到我在最后两个按钮上有多个操作,非常感谢:)

以上是关于UINavigationController后退按钮动作问题的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationController 后退按钮一半适用于 iPad 横向

如果用户按下后退按钮,如何调用一些代码

UINavigationController“后退按钮”自定义文本?

UINavigationController 后退按钮消失?

捕捉 UINavigationController 本机后退按钮操作

如何在 uinavigationcontroller 中隐藏后退按钮