2013-08-16 1 views
1

Когда UIButton используется для отображения UIPopovercontroller, он отображается на другом UIbarbuttonitemand и показывает пустой черный непрозрачный UIPopovercontroller.UIPopoverController показывает на другой кнопке

Вот мой реализован код:

- (IBAction)buttonTapped:(id)sender { 

UIButton *btnAction; 

BookmarkViewController* bookmarkVC = [[BookmarkViewController alloc] init]; 

_buttonPopoverController = [[UIPopoverController alloc] 
           initWithContentViewController:bookmarkVC]; 

_buttonPopoverController.delegate = self; 

CGRect popoverFrame = btnAction.frame; 
[_buttonPopoverController setPopoverContentSize:CGSizeMake(320, 355) animated:NO]; 

//only required if using delegate methods 

[_buttonPopoverController presentPopoverFromRect:popoverFrame 
               inView:self.view 
          permittedArrowDirections:UIPopoverArrowDirectionUp 
              animated:YES]; 
} 
+0

Как вы настройки 'UIButton * btnAction' для правильной кнопки? – Alexander

+0

с помощью раскадровки для подключения buttonTapped – user1120133

+1

Это, вероятно, ваша проблема. Вам нужно выбрать кнопку, основанную на некотором свойстве отправителя '(id), который предоставляется функции, или просто назначить отправителя кнопке:' * btnAction = sender' – Alexander

ответ

1

У вас не хватает на Ассинг sender в btnAction

что UIButton *btnAction=(UIButton *)sender;

попробовать это,

- (IBAction)buttonTapped:(id)sender { 

UIButton *btnAction=(UIButton *)sender; 


UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
UIViewController *bookmarkVC = [storyboard instantiateViewControllerWithIdentifier:@"BookmarkViewController"]; 

_buttonPopoverController = [[UIPopoverController alloc] 
           initWithContentViewController:bookmarkVC]; 

_buttonPopoverController.delegate = self; 

CGRect popoverFrame = btnAction.frame; 
[bookmarkVC setContentSizeForViewInPopover:CGSizeMake(320, 355)]; 

//only required if using delegate methods 

[_buttonPopoverController presentPopoverFromRect:popoverFrame 
               inView:self.view 
          permittedArrowDirections:UIPopoverArrowDirectionUp 
              animated:YES]; 
} 
+0

с этим изменением теперь он отображается под правильным uibutton, но почему он показывает пустое. Он должен показывать табличный вид с помощью кнопки добавления, редактирования и создания. – user1120133

+0

проверить обновленный ответ: 'BookmarkViewController * bookmarkVC = [[BookmarkViewController alloc] initWithNibName: @" BookmarkViewController "bundle: nil];' –

+0

Это изменение вызывает приложение, когда uibutton используется для отображения uipopovercontroller – user1120133

1

Ваш вопрос здесь

[_buttonPopoverController presentPopoverFromRect:popoverFrame 
               inView:self.view 
          permittedArrowDirections:UIPopoverArrowDirectionUp 
              animated:YES]; 

где presentPopoverFromRect:popoverFrame должно быть на самом деле Прямоугольник в пирог не из UIButton, а также btnAction не имеет рамки, которую вы также не выделили, и вы выполняя CGRect popoverFrame = btnAction.frame;

Это должно быть как

[popover presentPopoverFromRect:CGRectMake(0.0, 0.0, 300.0, 50.0) inView:self.view 
       permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 

Надеется, что это помогает.

+0

Согласно [документации:] (http : //developer.apple.com/library/ios/documentation/uikit/reference/UIPopoverController_class/Reference/Reference.html#//apple_ref/occ/instm/UIPopoverController/presentPopoverFromRect: inView: allowedArrowDirections: анимированный :) 'rect: прямоугольник, с которого будет привязываться окно popover. ' – Alexander

+0

Я попытался с вашими изменениями, но не работал – user1120133

+0

что вы изменили .... – IronManGill

Смежные вопросы