добавление пользовательского представления к элементу всплывающего окна - PullRequest
1 голос
/ 19 марта 2012

После прочтения примера Apple: MultipleDetailViews , который демонстрирует, как использовать UIPopOverController с двумя контроллерами подробного представления, я не могу понять, как добавить пользовательское представление к barButtonItem, существующему в splitViewController метод делегата:

-(void)splitViewController:(UISplitViewController*)svc willHideViewController: (UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController:(UIPopoverController*)pc {

    self.popoverController = pc;
    barButtonItem.text = @"root view controller";
    self.rootPopoverButtonItem = barButtonItem;

    UIViewController <SubstitutableDetailViewController> *detailViewController = [mySplitViewController.viewControllers objectAtIndex:0];
    [detailViewController showRootPopoverButtonItem:self.rootPopoverButtonItem];
}

поповерная кнопка хорошо работает с формой по умолчанию, но когда я пытаюсь что-то вроде этого:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *customImage = [UIImage imageNamed:@"popOver.png"];
[button setBackgroundImage: [UIImage imageNamed:@"popOver.png"] forState:UIControlStateNormal];
button.frame= CGRectMake(0.0, 0.0, customImage.size.width, customImage.size.height);
[button addTarget:self action:@selector(???) forControlEvents:UIControlEventTouchUpInside];
barButtonItem.customView = button;

Я не знаю, что за селектор для этой кнопки, который заставит всплывающее окно отображаться правильно, мой поповер работает хорошо без селектора, используя методы делегата UISplitViewController, так какой тип селектора мне здесь поставить?

1 Ответ

5 голосов
/ 20 марта 2012

Почему вы добавляете кнопку к элементу панели кнопок вместо просмотра изображения?Использование представления изображения (или отключение взаимодействия с пользователем на кнопке) приведет к тому, что приложение будет использовать селектор и кнопку-указатель элемента панели.

Если вы все еще хотите использовать отдельную кнопку, то вы можете сделать следующее:

[button addTarget:barButtonItem.target action:barButtonItem.action forControlEvents:UIControlEventTouchUpInside];

Это скопирует цель и действие элемента панели кнопок по умолчанию.

...