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控制器出現時右邊的按鈕消失。
它只是明白了我什麼可能的出錯。該應用程序是一個TabController - >三個導航 - > ViewControllers。 MainWindow nib包含Window,TabController和三個Nav對象。根控制器通過IB編碼其根節點,但在AppDel中沒有對它們的引用。我的理解是ViewController的Navs可以通過「Nav」屬性被引用,但在調試器下,我找不到它。我的猜測是,因爲他們通過筆尖instanciated,沒有引用他們的導航堆棧?我將不得不做**閱讀這些筆尖文件。 – surfasb
@ studev的回答是正確的。推入導航控制器的每個視圖控制器都有自己的navigationItem,需要進行配置。您可以通過IB或編程方式進行此操作。 – XJones