2010-10-10 80 views

回答

2

您需要更改默认的返回按钮,在viewDidLoad

- (void) viewDidLoad 
{ 
    self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" 
              style:UIBarButtonItemStyleBordered 
              target:self 
              action:@selector(handleBack:)] autorelease]; 
} 

,当然还有你在你的方法弹出控制器:

- (void) handleBack:(id)sender 
{ 
    // ... your code ! 

    [self.navigationController popViewControllerAnimated:YES]; 
} 
+1

不要忘记释放该按钮项目。否则,你在泄漏它。 – 2010-10-10 18:23:09

+0

Thx。是否有可能将按钮设置回箭头形状? – Dopamine 2010-10-10 19:20:15

+0

-1,这会泄漏。像这样创建它: 'UIBarButtonItem * button = [[UIBarButtonItem alloc] initWithTitle:@“Back”style:UIBarButtonItemStyleBordered target:self action:@selector(handleBack :)];',像这样设置:'self.navigationItem。 leftBarButtonItem =按钮;'和**记得释放它,''[按钮释放]'。 – Emil 2010-10-10 20:43:21

2

你应该尝试其他UINavigationBarDelegate代表方法,–navigationBar:shouldPopItem:,并在做任何你需要做的事情后返回YES。在事情发生之前,“应该”调用委托方法。在发生之后调用“方法”。

您调用的方法不适用于后退按钮。后退按钮将“弹出”视图控制器。相反(你使用的是)“推”一个视图控制器。推送将新的视图控制器添加到堆栈。弹出窗口从堆栈中删除视图控制器。

此外,请确保符合UINavigationBarDelegate。如果您使用的委托方法没有发生任何事情,则会发生错误。 AFAIK如果您使用UINavigationController,代表应自动设置。 “

+0

谢谢!我有一个符合委托的UINavigationController,但没有一个委托方法适用于我的应用程序。这很奇怪。 – Dopamine 2010-10-10 19:18:45

+0

然后要做的第一件事是找出为什么你的委托方法没有被调用。复制并粘贴文档中的方法名称。在更简单的应用程序中使用委托方法来查看它们的工作方式。查看你的代码并阅读如何让代表工作。 – 2010-10-10 23:19:00

0

”还试了委托:......但没有任何反应。“ 首先要做的是在你怀疑没有被调用的函数内部设置一个断点。只需点击xcode中代码的左侧即可设置断点。

相关问题