我想用导航栏和表格视图制作一个简单的视图。所以我创建了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;
显示视图没有错误,但按钮没有。我该怎么做才能显示它?
答案 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;