Я пытаюсь включить сканирование штрих-кода api в свое приложение ipad (XCode5, iOS7, Storyboards). Я не могу заставить его работать, хотя код выполнен. Для краткости полный код сканирования можно найти here. Проблема, как представляется, в этом кусочке кода из класса сканирования:Почему эта ошибка сборки при попытке подключить UIPopover к UIButton в другом классе?
// define the window
_highlightView = [[UIView alloc] init];
_highlightView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleBottomMargin;
_highlightView.layer.borderColor = [UIColor greenColor].CGColor;
_highlightView.layer.borderWidth = 3;
[self.view addSubview:_highlightView];
Я думаю мне нужно это UIPopover с небольшим UIView в нем, потому что на моем текущем UIView ничего не появляется. Так что это код, который я придумал:
UIViewController* popoverContent = [[UIViewController alloc] init];
UIView* popoverView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 350, 500)];
popoverView.backgroundColor = [UIColor colorWithWhite:(CGFloat)1.0 alpha:(CGFloat)1.0]; // frame color?
popoverContent.view = popoverView;
//resize the popover view shown in the current view to the view's size
popoverContent.preferredContentSize = CGSizeMake(350, 500);
_highlightView = [[UIView alloc] init];
_highlightView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleBottomMargin;
_highlightView.layer.borderColor = [UIColor greenColor].CGColor;
_highlightView.layer.borderWidth = 3;
[self.view addSubview:_highlightView];
// if previous popoverController is still visible... dismiss it
if ([popoverController isPopoverVisible]) {
[popoverController dismissPopoverAnimated:YES];
}
//create a popover controller
DetailViewController *dvc = [[DetailViewController alloc]init];
popoverController = [[UIPopoverController alloc] initWithContentViewController:popoverContent];
[popoverController presentPopoverFromRect:dvc.oReadBarCode.frame
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionUp
animated:YES];
Однако я получаю сообщение об ошибке сборки на последней строке, где я presentPopoverFromRect определение кнопки, чтобы прикрепить поповер к:
Popovers не может быть представленным с точки зрения, которая не имеет окна ».
Как исправить это? (Идея состоит в том, чтобы UIPopover отображал результаты сканирования).
Что вы будете делать, прежде чем перейти к этому коду? Чтобы предотвратить ошибку, оберните все в 'if (self.view.window) {/ * code * /}' – nhgrif
Итак, весь этот код находится в 'viewDidLoad'? Переместите его в 'viewWillAppear:' или 'viewDidAppear:'. – nhgrif
В представлении нет окна, пока оно не будет добавлено в качестве подсмотра для представления, которое имеет окно, или, если оно является свойством '.view' контроллера представления, тогда у него не будет окна в' viewDidLoad' (я думаю), у него не будет окна до 'viewWillAppear:' или 'viewDidAppear:'. – nhgrif