2013-09-30 180 views
0

我有一个嵌入在导航控制器中的表格视图控制器。表格单元格都是静态的,选择它们中的任何一个都会继续到另一个表格视图。当发生延续时,导航栏显示新视图的“取消”按钮,而不是“返回”按钮。用后退按钮替换导航栏取消按钮

我可以在代码添加一个后退按钮等

- (void)viewDidLoad 
{ 
    self.navigationItem.backBarButtonItem = 
     [[UIBarButtonItem alloc] initWithTitle:@"Back" 
             style:UIBarButtonSystemItemCancel 
             target:nil 
             action:nil]; 
    self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem; 
} 

但随后返回按钮将是一个矩形形状,而不是这对左边缘的角度的缺省返回按钮形状。如何简单地将取消按钮更改为系统后退按钮?

这里是我的赛格瑞代码表单元格的下一个表视图

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    switch (indexPath.row) { 
     case 0: 
      [self performSegueWithIdentifier:@"goToSecondTable" sender:self.tableView]; 
      break; 
     /* and perform segue for other rows */ 
     default: 
      break; 
    } 
} 

并没有什么内部prepareForSegue做。

这里是连接检查显示

connections inspector

,这里是对的连接 - 提供后退按钮应该是“栏按钮项背”

Bar Button Item - Back

+0

你能后的代码,您正在使用推新视图。而且,如果您在新控制器的加载方法中做了任何事情? – Eric

+0

添加了我的触发segue并加载视图的代码。谢谢! – marsant

回答

0

系统左边的条形按钮项目默认不需要做任何事情(在代码或IB中)。

删除连接到Connections检查器中的backBarButton。从IB的导航栏中删除后栏按钮。在你的代码中移除出口到后台栏按钮。运行你的应用程序,你应该看到一个免费提供给你的back bar按钮。

+0

但是取消按钮在我的情况下显示为默认。后退按钮不。 – marsant

+0

您必须编写一些代码才能做到这一点,或者将其拖放到IB中。 – bilobatum

+0

偶然,你是否从对象库拖放导航栏? – bilobatum

0

自定义代码,如果没有默认后退按钮不起作用

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:myBackImage style: UIBarButtonItemStylePlain target:self action:someAction]; 
self.navigationItem.backBarButtonItem = backButton; 
[backButton release]; 
+0

试过这个已经但不工作 – marsant

0

你为什么要didselectrow执行赛格瑞而不是只推视图 - 控制?

尝试[self.navigationController pushViewController:YOURVIEWCONTROLLER];

这将确保您有一个后退按钮。此外,你必须使用这样的赛格,确保你正在使用推到你的下一个控制器。它看起来像在第二个viewController中创建了自己的后退按钮。您不需要创建一个,因为将使用前一个viewcontroller的标题为您创建一个。您可以确保它在回推前通过在之前的视图控制器中更改self.title = @“Back”来回复。

代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    switch (indexPath.row) { 
     case 0: 
      self.title = @"Back"; 
      [self.navigationController pushViewController:SECONDVC]; 
      break; 
     /* and perform segue for other rows */ 
     default: 
      break; 
    } 
} 

和viewWillAppear中:

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    self.title = @"Whatever you want"; 
} 
+0

我想知道在什么情况下,取消按钮,而不是后退按钮,会默认出现?我最终添加了一个'完成'按钮来'覆盖'取消按钮,只需很少的代码更改。谢谢! – marsant