0

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

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

没有错误时显示的视图,但不是按钮。我该如何显示它?

回答

1

贾法尔,

苹果文档建议您应避免继承UINavigationController

该类不适用于子类。

说这话时,你可以按照以下步骤简单(一些建议你):

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

[P.S。你也可以继承一个UITableViewController,它有一个表中查看自己的]

  • 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]; 
+0

伟大工程:)因为我呈现视图为模态的看法是有规定的方式,让来电者MyController中的引用?因为如果我使用self.parentViewController,它会引用UINavigationController nc,而不是从我提交模态视图的对象(这是正常的我猜)。 – Alexis

1

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

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

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; 
+0

我试过这个,但是按钮没有左指向的形状。文字只是稍微向右移动:/ – Alexis

相关问题