2011-12-07 47 views
3

所以我們得到了一個具有UITableView的導航控制器爲RootViewController。然後,當用戶單擊表格單元格時,我們將EKEventController推送到導航堆棧並顯示由表格單元格表示的事件的詳細信息。右後導航欄按鈕項目消失後推視圖控制器

我想在右側添加一個按鈕,但它不顯示。

我在用戶單擊表格單元格時添加了按鈕。

- (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控制器出現時右邊的按鈕消失。

回答

3

您需要設置推視圖控制器的導航項目,讓您的線路:

self.navigationItem.rightBarButtonItem = locationMapViewButtonItem; 

應該改爲:

detailViewController.navigationItem.rightBarButtonItem = locationMapViewButtonItem; 
+0

它只是明白了我什麼可能的出錯。該應用程序是一個TabController - >三個導航 - > ViewControllers。 MainWindow nib包含Window,TabController和三個Nav對象。根控制器通過IB編碼其根節點,但在AppDel中沒有對它們的引用。我的理解是ViewController的Navs可以通過「Nav」屬性被引用,但在調試器下,我找不到它。我的猜測是,因爲他們通過筆尖instanciated,沒有引用他們的導航堆棧?我將不得不做**閱讀這些筆尖文件。 – surfasb

+0

@ studev的回答是正確的。推入導航控制器的每個視圖控制器都有自己的navigationItem,需要進行配置。您可以通過IB或編程方式進行此操作。 – XJones

相關問題