저는 XCode 영역에서 새로운 사람으로 누군가가 나를 도울 수 있는지 궁금해하고있었습니다.removeOverlay : 오버레이가 작동하지 않습니다.
본질적으로, 나는 WWDC2010의 TileMap 프로젝트 예제를 가지고 놀고 있는데, 분할 된 컨트롤러를 사용하여 NOAA 차트를 숨기는 방법을 찾으려하고있다.
오버레이를 활성화 할 수는 있지만 잘 표시되지만 세그먼트 된 컨트롤러를 사용하여 제거 할 수는 없습니다. 상관없이 당신 이름 제어 동작 방법에
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"initial view loaded");
}
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id)overlay {
TileOverlayView *view = [[TileOverlayView alloc] initWithOverlay:overlay];
view.tileAlpha = 1;
return view;
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
- (IBAction)switchMap:(id)overlay {
if (controller.selectedSegmentIndex == 0) {
NSLog(@"welp... it loaded...");
[map removeOverlay:overlay];
}
if (controller.selectedSegmentIndex == 1) {
NSLog(@"Map Overlay works");
NSString *tileDirectory = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Tiles"];
TileOverlay *overlay = [[TileOverlay alloc] initWithTileDirectory:tileDirectory];
[map addOverlay:overlay];
MKMapRect visibleRect = [map mapRectThatFits:overlay.boundingMapRect];
visibleRect.size.width /= 2;
visibleRect.size.height /= 2;
visibleRect.origin.x += visibleRect.size.width/2;
visibleRect.origin.y += visibleRect.size.height/2;
map.visibleMapRect = visibleRect;
}
if (controller.selectedSegmentIndex == 2) {
NSLog(@"But... overlay isnt hiding waa");
NSString *tileDirectory = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Tiles"];
TileOverlay *overlay = [[TileOverlay alloc] initWithTileDirectory:tileDirectory];
[map removeOverlay:overlay]; }
}
감사 안나, 그 나를 위해 많은 것을 정리했다. 나는이 모든 것에 대해 아직 익숙하지 않으며이 반응은 나의 질문에 대답했을뿐만 아니라 그것으로부터 많은 것을 배웠다. 감사! –