UIBarButton不会显示在我的UINavigationController中

时间:2012-06-22 15:49:21

标签: ios uinavigationcontroller uinavigationbar uibarbuttonitem

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

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

显示视图没有错误,但按钮没有。我该怎么做才能显示它?

3 个答案:

答案 0 :(得分:1)

backBarButtonItem应设置在上一个视图控制器上,而不是当前要显示的视图控制器上。例如,如果您在视图A上,则从中导航到B,在B A中将显示backBarButtonItem B。

如果您只想在导航栏的左侧显示项目,则可以使用leftBarButtonItem代替,这将在该控制器上显示正常的条形按钮。它将是矩形的,而不是像普通后背按钮那样的箭头。

答案 1 :(得分:1)

贾法尔,

正如Apple doc建议你应该避免继承UINavigationController

  

此类不适用于子类化。

说这个,你可以按照这些简单的步骤(给你一些建议):

  • 创建扩展MyController的控制器(例如UIViewController)并在此处添加表格。将控制器设置为该表的委托和数据源。如果您是由xib创建的,则需要一个用于表视图的插座。

[<强> P.S 即可。你也可以继承UITableViewController,它有一个自己的表视图]

  • viewDidLoad MyController自定义导航栏。

例如

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];

答案 2 :(得分:1)

你怎么试试这个:

UIButton* backButton = [UIButton buttonWithType:101]; // left-pointing shape!
        [backButton addTarget:self action:@selector(dismissFiltersModal:) forControlEvents:UIControlEventTouchUpInside];
        [backButton setTitle:@"Back" forState:UIControlStateNormal];

// create button item -- 
UIBarButtonItem* backItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];

// add to toolbar
self.navigationItem.leftBarButtonItem = backItem;