从SplitView的DetailViewController访问AppDelegate的Navigation Controller

时间:2012-01-27 13:21:13

标签: xcode uinavigationcontroller annotations uisplitviewcontroller

我的SplitView的DetailView有一个带注释的地图。单击Annotation后,整个窗口(而不仅仅是DetailView)应转到另一个视图。不幸的是,这不起作用。

这就是我在AppDelegate中创建NavigationController的方法

 UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController];  
[self.window addSubview:navigationController.view];

这就是我创建SplitView的方法

left = [[MapSplitViewLeft alloc] initWithStyle:UITableViewStylePlain];
right = [[MapViewController alloc] init];

splitViewController = [[UISplitViewController alloc] init];
splitViewController.viewControllers = [NSArray arrayWithObjects:left,right, nil];

self.view = splitViewController.view;

left.right = right;

[left release];
[right release];

这就是点击注释时所调用的内容:

- (void)showDetails:(id)sender {

 NSLog(@"Yes it works");

 VenueViewController *vviewcontroller = [[VenueViewController alloc]
 initWithNibName:@"VenueViewController" bundle:[NSBundle mainBundle]];

 AppDelegate *del = (AppDelegate *)[UIApplication sharedApplication].delegate;
 [del.navigationController pushViewController:vviewcontroller animated:YES];

}

当我点击Annotation时,我只得到“Yes it works”,但没有其他事情发生。 非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

每个UIViewController都有属性“navigationController”。尝试使用当前的ViewController推送新的Viewcontroller。

[self.navigationController pushViewController:vviewcontroller animated:YES];

编辑:对不起,你的意思是整个窗口!我认为这不会奏效。

edit2:也许这个答案可以帮助你how to add a view over window in uiviewcontroller但我认为那个视图不在你的navigationController-Stack上