UIBarButton不会在我的UINavigationController中显示

我想创建一个带有导航栏和表视图的简单视图。所以我创建了UINavigationController的一个子类,并在其中添加了一个UITableView。我的IS也是UITableViewDataSourceUITableViewDelegate。现在我想在导航栏中添加UIBarButton,但它不起作用:

UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle:[[Translator instance] getTranslation:@"Back"] 
                                                                  style:UIBarButtonItemStylePlain 
                                                                 target:self.parentViewController  
                                                                 action:@selector(dismissFiltersModal:)];          
self.navigationItem.backBarButtonItem = anotherButton;

没有错误地显示了视图,但没有显示按钮。我如何才能显示它?


解决方案

jafar,

正如Apple文档建议您应避免子类UINavigationController

此类不用于子类化。

说到这里,你可以遵循这些简单的步骤(给你的一些建议):

  • 创建扩展UIViewController的控制器(比如MyController),并在此处添加表格。将您的控制器设置为该表的代理和数据源。如果您是由XIB创建的,则需要为您的表视图提供插座。

[P.S。您还可以子类化aUITableViewController,它有自己的表视图]

  • MyControllerviewDidLoad中自定义导航栏。

例如

UIBarButtonItem* myButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(someSelector)];
self.navigationItem.leftBarButtonItem = myButton;

您还可以自定义标题。

例如

self.title = @"Your custom title";
  • 在代码中的某个位置创建UINavigationController,并将MyController的实例添加为根视图控制器。

例如:

MyController* myCtr = // alloc-init here
UINavigationController* nc = [[UINavigationController alloc] initWithRootViewController:myCtr];

相关文章