Tôi có chế độ xem bản đồ mà tôi đang thêm và xóa annotations
từ dựa trên công tắc trong số popovercontroller
. Khi tôi chạm vào bên ngoài popover
, nó loại bỏ chính xác và gọi phương thức delegate
popoverControllerDidDismissPopover:
Vấn đề mà tôi đang gặp phải là khi tôi bật công tắc trong popover
(chạm vào trong chế độ xem cửa sổ bật lên), nếu tôi xóa annotations
khỏi bản đồ hoạt động chính xác và cửa sổ bật lên vẫn hiển thị nhưng nếu tôi thêm annotations
vào chế độ xem bản đồ, thì popover
biến mất và phương thức delegate
không được gọi. Có ai đi qua hành vi này trước đây không?UIPopoverController loại bỏ mà không có đại biểu gọi
Sự khác biệt duy nhất giữa mã bật và tắt của công tắc là loại bỏ annotations
khỏi một mảng, còn giá trị khác sẽ thêm annotations
. Đây chỉ là vấn đề khi thêm annotations
vào chế độ xem bản đồ. Bất kỳ trợ giúp hoặc đề xuất sẽ được đánh giá cao.
Đây là cách popover
được hiển thị:
-(IBAction)toggleMapFiltersView:(id)sender
{
LayerPopoverViewController *popOverViewController = [[LayerPopoverViewController alloc] init];
[popOverViewController setDelegate:self];
[popOverViewController setBranchesShowing:branchesShowing];
[popOverViewController setSchoolsShowing:schoolsShowing];
[layersButton setSelected:YES];
popoverController = [[UIPopoverController alloc] initWithContentViewController:popOverViewController];
[popoverController setDelegate:self];
[popOverViewController release];
[popoverController presentPopoverFromRect:layersButton.frame
inView:[self view]
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}
Đây là phương pháp đang được gọi là từ quan điểm popover:
-(IBAction)toggleSchools:(id)sender
{
if ([self.delegate respondsToSelector:@selector(didChangeSchoolsDisplaySettingWithVisible:)])
{
if ([schoolsSwitch isOn])
{
[self.delegate didChangeSchoolsDisplaySettingWithVisible:YES];
self.schoolsShowing = YES;
}
else
{
[self.delegate didChangeSchoolsDisplaySettingWithVisible:NO];
self.schoolsShowing = NO;
}
}
}
và đây là phương pháp đó là đề cập đến:
-(void)didChangeSchoolsDisplaySettingWithVisible:(BOOL)visible
{
if (visible == YES)
{
schoolsShowing = YES;
if (self.schoolArray != nil && [self.schoolArray count] > 0)
{
for (MySchool *school in self.schoolArray)
{
[mapView addAnnotation:school];
}
}
}
else
{
schoolsShowing = NO;
for (id<MKAnnotation> annotation in mapView.annotations)
{
if ([annotation isKindOfClass:[MySchool class]])
{
[mapView removeAnnotation:annotation];
}
}
}
}
bạn có thể đăng một số mã, do đó chúng ta có thể nhìn vào những gì đang xảy ra? – xCoder
đã thêm hai phương thức có liên quan – user1359733
Vui lòng cho chúng tôi biết cách bật và hiển thị cửa sổ bật lên. –