单击注释时按下视图

时间:2011-02-02 04:11:58

标签: iphone objective-c

我试图在用户点击注释时推送视图,我有以下代码:

- (void) mapView: (MKMapView *) mapView annotationView:(MKAnnotationView *) view calloutAccessoryControlTapped:(UIControl *) control
{
    childController = [[NeighborProfileViewController alloc] initWithNibName:@"NeighborProfileViewController" bundle:nil];
    childController.title = view.annotation.title;
    childController.uid = [((NeighborMapAnnotation *)(view.annotation)) uid];
    [self.navigationController pushViewController:childController animated:YES];
}

我知道代码在这个片段中执行,因为我试图打印出一些东西而且它确实打印了。但是,为什么不改变我已经推动的观点的观点?

这是因为这个视图实际上是主视图的子视图,它实际上有导航控制器吗?如果是这种情况,那么我该如何解决这个问题。这是加载subView的代码:

-(IBAction) toggleAction:(id) sender {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1.0];  
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];

    if(self.navigationItem.rightBarButtonItem.title == @"List"){
        self.navigationItem.rightBarButtonItem.title = @"Map";
        [mapViewController.view removeFromSuperview];
    }else {
        [self.view addSubview:mapViewController.view];
        [self.view sendSubviewToBack:self.view];
        self.navigationItem.rightBarButtonItem.title = @"List";
    }

    [UIView commitAnimations];

}

换句话说,calloutAccessoryControlTapped位于mapViewController

2 个答案:

答案 0 :(得分:0)

您的代码不足以回答以下问题:

您的导航控制器是否已初始化? 即使您正在呼叫self.navigationController,如果它是nil,那么也不会发生任何事情。

是否正确拼写了xib名称?如果您使用不正确的xib名称将控制器推入导航堆栈,则可能不会抛出错误,并且您的控制器不会被推入堆栈。< / p>

编辑:

在显示初始视图之前,需要创建UINavigationController的实例。以下是呈现模态视图的示例:

YourViewController* rootViewController; /* however you are creating the initial view */;

UINavigationController navController = 
        [[UINavigationController alloc] initWithRootViewController:rootViewController];

[rootViewController release];

[self presentModalViewController:navController animated:YES];
[navController release];

答案 1 :(得分:0)

你的mapviewcontroller没有对navigationcontroller的引用。你的主视图控制器。所以你需要做的是将导航控制器的引用传递到maview控制器上,然后将视图推到那个控制器上。如果您有任何问题,请告诉我