Добавление нового представления при нажатии правой кнопки CalloutAccessoryView
-
19-09-2019 - |
Вопрос
Я хочу добавить новое представление при нажатии правой кнопки просмотра аксессуаров.В настоящее время у меня есть возможность поставить отметку на карте.Выноска (MKAnnotation) с заголовком, подзаголовком и шевроном загружается, когда я нажимаю на булавку.Когда я нажимаю на шеврон (rightcalloutaccessoryview), я хочу, чтобы появилось другое представление, показывающее дополнительную информацию на этом этапе.Прямо сейчас шевронный кран ничего не делает.Вот что у меня есть:
-(IBAction)showInfo:(id)sender
{
int calloutButtonPressed = ((UIButton *)sender).tag;
if(calloutButtonPressed < 99999)
{
if(self.DetailView == nil)
{
DetailViewController *tmpViewController = [[UIViewController alloc] initWithNibName:@"DetailView" bundle:nil];
self.DetailView = tmpViewController;
[tmpViewController release];
}
if (calloutButtonPressed == 1)
{
// Using the debugger, I found that calloutButtonPressed is equal to 0 when the button is pressed.
// So I'm not sure what the point of this method is...
}
self.DetailView.title = @"Title";
}
}
Я проверил, что этот метод действия вызывается при нажатии шеврона.К сожалению, я не могу заставить его открыть новое представление.Если кто-нибудь знает, что я делаю неправильно, пожалуйста, дайте мне знать.Я немного в затруднительном положении...
Спасибо!
Томас
Решение
-(IBAction)showInfo:(id)sender
{
int calloutButtonPressed = ((UIButton *)sender).tag;
if(calloutButtonPressed < 99999)
{
if(self.detailView == nil)
{
DetailViewController *tmpViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
self.detailView = tmpViewController;
[tmpViewController release];
}
[self.navigationController pushViewController:self.detailView animated:YES];
if (calloutButtonPressed == 0)
{
// TRP - I inserted my view atIndex:99999 to ensure that it gets placed in front of all windows
// TODO: figure a better way to do this
[self.view insertSubview:detailView.view atIndex:99999];
}
self.detailView.title = @"Title";
}
}
Не хватало одного утверждения:
[self.view insertSubview:detailView.view atIndex:99999];
Я хотел бы найти другой способ, чтобы мне не нужно было иметь там это магическое число (99999) (плюс, оно кажется каким-то незрелым...).Я не СЛИШКОМ беспокоюсь об этом, потому что это работает.
Мне помогли форумы разработчиков Apple, здесь.