UIPopoverController - SIGABRT при представлении - PullRequest
0 голосов
/ 22 марта 2012

Я пытаюсь представить popoverView при нажатии кнопки barButton.К сожалению, приложение вылетает с сигналом SIGABRT каждый раз, когда я пытаюсь вызвать его.«Empty.xib» имеет разработанное представление.(Поскольку я использую barButton, я не смог использовать фрейм, если у вас есть обходной путь, пожалуйста, так и скажите).

- (IBAction)loadPopover:(id)sender 
{
    UIView *someView = [[UIView alloc] init];
    UIViewController *someVC = [[UIViewController alloc] initWithNibName:@"Empty.xib" bundle:[NSBundle mainBundle]];
    UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:someVC];

    someView.frame = CGRectMake(0, 44, 320, 372);
    someView.backgroundColor = [UIColor lightGrayColor];

    popoverController.delegate = self;

    self.popoverView = popoverController;

    [self.popoverView presentPopoverFromBarButtonItem:sender  permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    // CGRect popoverRect = [self.view convertRect:[btn frame] fromView:[btn superview]];

    CGRect popoverRect = CGRectMake(0, 88, 320, 311);

    popoverRect.size.width = MIN(popoverRect.size.width, 100); 
    [self.popoverView presentPopoverFromRect:popoverRect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];    
}

Ответы [ 2 ]

0 голосов
/ 22 марта 2012

Удалить .xib деталь из initWithNibName:@"Empty.xib". Измените строку на эту:

UIViewController *someVC = [[UIViewController alloc] initWithNibName:@"Empty" bundle:nil];

Edit:
С здесь -

Имя файла пера не должно содержать никакой начальной информации о пути.

0 голосов
/ 22 марта 2012

Несколько предложений здесь.

  1. Проверьте, подключена ли розетка view

  2. Почему вам нужно выделить UIView, как показано ниже? UIView *someView = [[UIView alloc] init];

  3. Проверьте, имеет ли отправитель тип UIBarButtonItem

  4. Какова политика хранения для self.popoverView? Проверьте, если это retain или strong (если ARC)

  5. Почему вы представляете поповер два раза?

Сказал это, вот простой фрагмент.

UIBarButtonItem* barButton = (UIBarButtonItem*)sender;

UIViewController *someVC = [[UIViewController alloc] initWithNibName:@"Empty" bundle:[NSBundle mainBundle]];

UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:someVC];

popoverController.delegate = self;

self.popoverView = popoverController;

[self.popoverView setPopoverContentSize:CGSizeMake(300, 200)];

[self.popoverView presentPopoverFromBarButtonItem:barButton permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

P.S. Обратите внимание на память, если вы не используете ARC.

Надеюсь, это поможет.

...