Ios 按下视图控制器后,右导航栏按钮项消失

Ios 按下视图控制器后,右导航栏按钮项消失,ios,uinavigationcontroller,uinavigationbar,Ios,Uinavigationcontroller,Uinavigationbar,我们为RootViewController提供了一个带有UITableView的导航控制器。然后,当用户单击表格单元格时,我们将EKEventController推送到Nav堆栈上,并显示由表格单元格表示的事件的详细信息 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // Upon selecting an event, create an

我们为RootViewController提供了一个带有UITableView的导航控制器。然后,当用户单击表格单元格时,我们将EKEventController推送到Nav堆栈上,并显示由表格单元格表示的事件的详细信息

- (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中或以编程方式执行此操作。