Исключение UIPopoverController при попытке инициализации

Привет, я новичок в программировании xcode. так что этот вопрос может показаться смешным. Я пробую различные функции в UIWebview. Я успешно добавил текстовое поле URL и выполнил поиск в текстовом поле Google. Теперь я пытаюсь разрешить пользователю добавлять закладки. Для этого я сохраняю URL-адреса в массиве. Однако я хочу, чтобы представление UIPopover отображалось, когда я нажимаю элемент кнопки панели закладок. Я продолжаю получать эту ошибку при попытке инициализировать UIPopoverController.

objPopOverController = [[UIPopoverController alloc]init ];

Любая помощь относительно того, почему здесь возникает исключение.

Спасибо.

РЕДАКТИРОВАТЬ:

- (IBAction)addBookmark:(UIBarButtonItem *)sender {
    BookmarkPopover *objBook = [[BookmarkPopover alloc]init];    
    objPopOverController = [[UIPopoverController alloc]init ];
    objPopOverController.contentViewController = objBook;
    objPopOverController.delegate = self;
    objPopOverController.popoverContentSize = CGSizeMake(180, 120);
    [objPopOverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}

ПРИСТАВКА:

There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".Attaching to process 13287.
Pending breakpoint 1 - "objc_exception_throw" resolved
[Switching to process 13287 thread 0x2303]
[Switching to process 13287 thread 0x207]
sharedlibrary apply-load-rules all
Error in re-setting breakpoint 1:
Catchpoint 2 (throw)Error in re-setting breakpoint 1:
Error in re-setting breakpoint 1:
Current language:  auto; currently objective-c
(gdb) 

self    ViewController *    0x6829f20
_cmd    SEL 0x4437
sender  UIBarButtonItem *   0x6a33020
objBook BookmarkPopover *   0x68528b0
Registers   (null)  (null)
Vector Registers    (null)  (null)
x87 Registers   (null)  (null)

РЕДАКТИРОВАТЬ 2:

Я попытался инициализировать программу UIView грамматически, а затем добавить ее, но все равно выдает ту же ошибку.

-(IBAction) buttonAction:(id)sender {

//build our custom popover view

UIViewController* popoverContent = [[UIViewController alloc] init];

UIView* popoverView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 300)];

popoverView.backgroundColor = [UIColor whiteColor];

popoverContent.view = popoverView;

//resize the popover view shown

//in the current view to the view's size

popoverContent.contentSizeForViewInPopover = CGSizeMake(200, 300);

//create a popover controller

self.objPopOverController = [[UIPopoverController alloc] initWithContentViewController:popoverContent];

//present the popover view non-modal with a
//refrence to the button pressed within the current view
[self.objPopOverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

//release the popover content

}

Я все еще застреваю, когда когда-либо инициализирую свой PopOverController.


person footyapps27    schedule 03.07.2012    source источник
comment
Можете ли вы опубликовать код и какое исключение вы получаете?   -  person Nuzhat Zari    schedule 03.07.2012
comment
эй, я только что отредактировал вопрос ..   -  person footyapps27    schedule 03.07.2012
comment
Можем ли мы увидеть self.objPopOverController? Вы используете АРК?   -  person Lorenzo B    schedule 03.07.2012
comment
посмотрите на сообщение об исключении, оно скажет вам, что не так   -  person Nick Dowell    schedule 03.07.2012
comment
//в .h @property(nonatomic,strong) UIPopoverController *objPopOverController; в .m я только что синтезировал его. да, я использую ARC.   -  person footyapps27    schedule 03.07.2012


Ответы (1)


Вы не можете инициализировать всплывающий контроллер с помощью init. Вы должны указать контроллер представления содержимого при инициализации с помощью -initWithContentViewController:. Вызванное вами утверждение, вызвавшее сбой, а также документация для UIPopoverController сообщат вам об этом.

person Jason Coco    schedule 03.07.2012
comment
Эй, Джейсон, я попытался инициализировать его с помощью приведенной ниже команды. BookmarkPopover *objBook = [[BookmarkPopover alloc]init]; objPopOverController = [[UIPopoverController alloc]initWithContentViewController:objBook]; все равно получаю ту же ошибку.. - person footyapps27; 03.07.2012
comment
@ footyapps27 Является ли objBook правильным потомком UIViewController? - person Jason Coco; 03.07.2012
comment
да, это обычный класс UIViewController. Я только что внес изменения в файл .xib класса BookmarkPopover. Изменен размер представления на (180 120) - person footyapps27; 03.07.2012
comment
@footyapps27 какое на самом деле исключение? Нажмите «Продолжить» в отладчике, чтобы обойти точку останова и получить информацию об исключении. Возможно ли, что onjBook равен нулю? - person Jason Coco; 03.07.2012
comment
Один шаг до выхода из функции objc_exception_throw, которая не имеет информации о номере строки. Точка 2 (сгенерировано исключение). Один шаг до выхода из функции __cxa_throw, которая не имеет информации о номере строки. Затем я перехожу к основной функции, где я получаю программу, полученную SIGABRT. Как проверить, является ли objBook нулевым или нет?? - person footyapps27; 03.07.2012
comment
@ footyapps27 он должен вывести на консоль строку утверждения, например, индекс за пределами границ или что-то в этом роде. Попробуйте отключить точку останова и запустить. Для регистратора может быть небезопасно получать блокировку записи, и отладчик может использовать эту информацию при пошаговом выполнении. - person Jason Coco; 03.07.2012
comment
Пробовал запускать без точки останова. Меня направляют прямо к главному, выдающему ошибку SIGABRT. Отладчик выглядит примерно так: argc int 1 argv char ** 0xbfffecc8 argv char * 0xbfffedec **argv char 47 '/' Регистры (null) (null) $edx int 0x9296fc5a $esp void * 0xbfffec50 $ebp void * 0xbfffeca8 $esi int 0x222e $edi int 0x58e4 $eip void ()() 0x22b8 $eflags int 0x286 $cs int 0x17 $ss int 0x1f $ds int 0x1f $es int 0x1f $fs int 0x0 $gs int 0x37 Vector Registers (null) (null) x87 Registers (null) (null) - person footyapps27; 03.07.2012