0

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

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

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

4

3 回答 3

1

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

如果您只想在导航栏的左侧显示一个项目,您可以改用leftBarButtonItem它,它将在该控制器上显示一个普通的栏按钮。它将是矩形的,而不是像普通后退按钮那样的箭头。

于 2012-06-22T16:00:23.853 回答
1

贾法尔,

正如 Apple doc 建议的那样,您应该避免子类化UINavigationController.

此类不用于子类化。

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

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

[附言。你也可以继承 a UITableViewController,它有一个自己的表格视图]

  • viewDidLoadMyController定义导航栏。

例如

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];
于 2012-06-22T16:21:34.263 回答
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;
于 2012-06-22T16:24:58.870 回答