0

我已经在我的一个项目中集成了 Oomph MacMapKit,我完成了所有步骤。但有一个问题。我正在使用 NSToolbar 并在视图之间切换。每当我在我的地图页面中,如果我切换到另一个页面然后切换回地图页面,地图就会在 MKMapView 下绘制,并且 MKMapView 是白色的,但我可以通过在白色区域中拖动鼠标来导航地图。

我也在另一个项目中尝试过,它的行为再次如此。

正常外观

http://i.stack.imgur.com/kf4AL.png

换回来后

http://i.stack.imgur.com/BOJK6.png

有谁知道我该如何解决这个问题?

此代码在我的窗口控制器委托中运行以切换页面

- (NSView*)viewForTag:(int)tag
{
    switch (tag)
    {
        case 0:
            return [firstViewController view];
            break;
        case 1:
            return [secondViewController view];
            break;
        default:
            return [firstViewController view];
            break;
    }
}

- (IBAction)switchViews:(id)sender
{
    NSView* currentView = [self viewForTag:[sender tag]];
    NSView* previousView = [self viewForTag:currentViewTag];

    currentViewTag = [sender tag];

    [[[[self window] contentView] animator] replaceSubview:previousView with:currentView];
}

地图页面没有特殊代码。

提前致谢

4

2 回答 2

0

我不能错你的代码。我假设您单步执行了您的代码并检查了所有视图是否已正确添加和删除。此外,您可能需要检查切换后为地图视图设置的框架。如果框架的 NSRect 是您的空白所在的位置,那么 MKMapView 并不热衷于在视图堆栈中添加和删除。

这是一个很长的镜头,但您可以尝试以下方法之一:

  • 用于setHidden:暂时使您的地图视图不可见,而不是删除和添加它。不确定,但是您可能会从中获得一些性能,并且隐藏和显示可能比添加和删除更便宜...

  • 使用addSubView:removeFromSuperview切换视图。这可能需要一些代码来提供正确设置视图的框架,或者有一个方便的“默认”框架,您可以在添加视图时使用它。

底线 MKMapView 是 WebView 的包装器,有时看起来有点奇怪。

于 2012-04-18T15:53:43.677 回答
0

这个 Map Kit 有时有点问题,改变我呈现视图的方式解决了这个问题。

于 2012-08-03T07:15:17.450 回答