2012-01-21 3 views
2

Вот мой кодпоповер от UIButton

-(IBAction)showMenu:(id)sender 
{ 
    Demo *mainMenuTableView = [[Demo alloc] init]; 
    UIPopoverController *pop = [[UIPopoverController alloc]initWithContentViewController:mainMenuTableView]; 
    [pop setDelegate:self]; 

}

Demo мой XIB, который содержит материал контроллера TableView. Это «демо» прекрасно работает в полноэкранном режиме.

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

Я уверен, что я как строка кода или два прочь ... Надеюсь. Любая помощь будет оценена!

Thx!

ответ

12

После того, как вы создаете контроллер popover, вы должны сообщить ему, чтобы он представил popover. Вы можете использовать либо presentPopoverFromRect:inView:permittedArrowDirections:animated:, либо presentPopoverFromBarButtonItem:permittedArrowDirections:animated:. Например, я предполагаю, что вы подключили showMenu: к действию UIButton. Таким образом, вы можете добавить это в конце showMenu::

UIButton *button = (UIButton *)sender; 
[pop presentPopoverFromRect:button.bounds 
    inView:button 
    permittedArrowDirections:UIPopoverArrowDirectionAny 
    animated:YES]; 

Кроме того, необходимо поставить ссылку на контроллер поповера в переменном экземпляре или свойстве. В противном случае контроллер popover будет освобожден при возврате showMenu:, что приведет к сбою. Спасибо Флойдяну за это.

+0

showMenu на самом деле связано с действиями UIButton. Я добавил код, когда вы его разместили, и приложение все еще падает, когда я нажимаю кнопку. Я также попытался сделать это как «[pop presentPopoverFromRect: CGRectMake (0, 0, 100, 100) inView: кнопка allowedArrowDirections: UIPopoverArrowDirectionDown animated: YES]; ', но он также по-прежнему падает ... – Calderon

+0

Не видя трассировку стека, мы не можем помочь вам диагностировать проблему. Измените свой вопрос и вставьте в трассировку стека. –

+0

Также вставьте обновленный код. –

0

Вам нужно сохранить переменную «pop»! Просто установите UIPopoverController «POV» в качестве своего свойства и используйте код ниже в вашем IBAction.

self.POV = [[UIPopoverController alloc]initWithContentViewController:mainMenuTableView]; 
[self.POV presentPopoverFromRect:button.bounds 
inView:button 
permittedArrowDirections:UIPopoverArrowDirectionAny 
animated:YES]; 
Смежные вопросы