UIBarButton不会显示在我的UINavigationController中
我想用一个导航栏和一个表格视图做一个简单的视图。 所以我创build了一个UINavigationController
的子类,并在其中添加了一个UITableView
。 我的也是UITableViewDataSource
和UITableViewDelegate
。 现在我想添加UIBarButton
在导航栏,但它不工作:
UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle:[[Translator instance] getTranslation:@"Back"] style:UIBarButtonItemStylePlain target:self.parentViewController action:@selector(dismissFiltersModal:)]; self.navigationItem.backBarButtonItem = anotherButton;
显示视图没有错误,但没有button。 我该如何显示呢?
贾法尔,
正如苹果医生build议你应该避免子类UINavigationController
。
这个类不适用于子类。
说这个,你可以按照这些简单的步骤(给你一些build议):
- 创build你的控制器(比如说
MyController
)来扩展UIViewController
并在这里添加表。 将您的控制器设置为该表的委托和数据源。 如果你已经创build了XIB,你需要一个出口的表视图。
[ PS 。 你也可以子类化一个UITableViewController
,它有一个表视图它自己]
- 在
MyController
viewDidLoad
中定制导航栏。
例如
UIBarButtonItem* myButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(someSelector)]; self.navigationItem.leftBarButtonItem = myButton;
你也可以自定义标题。
例如
self.title = @"Your custom title";
- 在你的代码的某个地方创build一个
UINavigationController
并添加一个MyController
的实例作为根视图控制器。
例如:
MyController* myCtr = // alloc-init here UINavigationController* nc = [[UINavigationController alloc] initWithRootViewController:myCtr];
backBarButtonItem
应在前一个视图控制器上设置,而不是当前要显示的视图控制器。 例如,如果您在视图A中,从它导航到B,在BA的backBarButtonItem
中将显示, 而不是 B的。
如果您只是想在导航栏的左侧显示一个项目,则可以使用leftBarButtonItem
,它将在该控制器上显示一个正常的条形button。 它将是矩形的,而不是像普通的后退button箭头。
你怎么试试这个:
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;