Ios 按下视图控制器后,右导航栏按钮项消失
我们为RootViewController提供了一个带有UITableView的导航控制器。然后,当用户单击表格单元格时,我们将EKEventController推送到Nav堆栈上,并显示由表格单元格表示的事件的详细信息Ios 按下视图控制器后,右导航栏按钮项消失,ios,uinavigationcontroller,uinavigationbar,Ios,Uinavigationcontroller,Uinavigationbar,我们为RootViewController提供了一个带有UITableView的导航控制器。然后,当用户单击表格单元格时,我们将EKEventController推送到Nav堆栈上,并显示由表格单元格表示的事件的详细信息 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // Upon selecting an event, create an
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Upon selecting an event, create an EKEventViewController to display the event.
self.detailViewController = [[[EKEventViewController alloc] initWithNibName:nil bundle:nil]autorelease];
detailViewController.event = [self.eventsList objectAtIndex:indexPath.row];
detailViewController.allowsEditing = NO;
UIBarButtonItem *locationMapViewButtonItem = [[UIBarButtonItem alloc]
initWithTitle:@"Map"
style:UIBarButtonItemStylePlain
target:self
action:@selector(showMap:)];
self.navigationItem.rightBarButtonItem = locationMapViewButtonItem;
[locationMapViewButtonItem release];
UITableView *eventTableView = [[self.detailViewController.view subviews]objectAtIndex:0];
[self.navigationController pushViewController:detailViewController animated:YES];
}
我试图在右侧添加一个按钮,但它没有显示
当用户单击表格单元格时,我正在添加按钮
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Upon selecting an event, create an EKEventViewController to display the event.
self.detailViewController = [[[EKEventViewController alloc] initWithNibName:nil bundle:nil]autorelease];
detailViewController.event = [self.eventsList objectAtIndex:indexPath.row];
detailViewController.allowsEditing = NO;
UIBarButtonItem *locationMapViewButtonItem = [[UIBarButtonItem alloc]
initWithTitle:@"Map"
style:UIBarButtonItemStylePlain
target:self
action:@selector(showMap:)];
self.navigationItem.rightBarButtonItem = locationMapViewButtonItem;
[locationMapViewButtonItem release];
UITableView *eventTableView = [[self.detailViewController.view subviews]objectAtIndex:0];
[self.navigationController pushViewController:detailViewController animated:YES];
}
但是,当EKEvent控制器显示时,右栏按钮消失。您需要设置正在按下的视图控制器的导航项,以便您的线路:
self.navigationItem.rightBarButtonItem = locationMapViewButtonItem;
应成为:
detailViewController.navigationItem.rightBarButtonItem = locationMapViewButtonItem;
我才意识到出了什么问题。该应用程序是一个选项卡控制器->三个导航->视图控制器。主窗口nib包含窗口、选项卡控制器和三个导航对象。根控制器的NIB通过IB编码,但在AppDel中没有对它们的引用。我的理解是ViewController的Nav可以通过“Nav”属性引用,但在调试器下,我找不到它。我的猜测是,因为它们是通过nib实例化的,所以没有对它们的导航堆栈的引用?我将不得不大量阅读这些nib文件。@studev的答案是正确的。推入导航控制器的每个视图控制器都有其自己的需要配置的navigationItem。您可以在IB中或以编程方式执行此操作。