2015-04-23 5 views
0

Я долгое время пытался создать центрированный popover из таблицы. Я в конце концов удалось получить его работу:Почему этот popper segue сосредоточен от UITableViewController?

enter image description here

с (я думаю ...) следующие шаги:

  1. якорь переход к Table View
  2. Set «Использование Preferred Явный размер "на контроллере стола: enter image description here
  3. Снимите отметку со всех параметров« Указания »в инспекторе атрибутов segue.
  4. Реализация протокола UIPopoverPresentationControllerDelegate в моем UITableViewController со следующим методом:

    функ adaptivePresentationStyleForPresentationController (контроллер: UIPresentationController) -> UIModalPresentationStyle { возвращение .None }

Теперь, я не думаю, я понимаю почему это сработало.

Если я не выбрал какие-либо опции «Направления», то popover отобразит вне экрана. Это потому, что popover попадает за пределы представления (которое в настоящее время занимает весь экран)? Как определяется опорная точка?

Возможно ли использовать предпочтительный явный размер?

ответ

0

Использование UITableView в качестве привязки означает, что при использовании стрелок стрелка будет располагаться к краю объекта, а затем, как вы догадались, отобразите выведенный из вида контроллер с экрана.

Если вы хотите стрелки вместо привязки segue к UITableView, вы можете сделать то же, что и я (как было предложено другим сообщением Stack Overflow), и поместить скрытую кнопку привязки за табличный вид. Затем, когда вы касаетесь ячейки, переместите кнопку в точку касания, а затем выполните сеанс.

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 
CGPoint tapPoint = CGPointMake(cell.frame.origin.x + cell.frame.size.width - (self.hiddenAnchorButton.frame.size.width/2), 
           cell.center.y + self.tableView.frame.origin.y - self.tableView.contentOffset.y); 
self.hiddenAnchorButton.center = tapPoint; 

[self performSegueWithIdentifier:@"yourSegueName" sender:cell]; 
Смежные вопросы