Я всегда пытаюсь представить легкую сдобу от ячейки в tableView этот путь:
[myPopover presentPopoverFromRect:cell.frame inView:self.tableView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
но я не могу использовать UIPopoverArrowDirectionRight или Левый, потому что, в зависимости от положения iPad (портрет или среда), легкая сдоба еще появляется где-нибудь.
Я представляю легкую сдобу правильный путь?
PS: табличное представление находится в detailView splitView.
Рамка ячейки будет что-то вроде 0,0,width,size, я не верю, что она будет иметь свои X и Y относительно tableView... вы хотите использовать - (CGRect)rectForRowAtIndexPath:(NSIndexPath *)indexPath для этого, это должно вернуть вам правильную рамку для ячейки относительно tableView...вот ссылка UITAbleView ref
У меня была такая же проблема, вот обходной путь, который я использовал:
вот пример кода
в MyCustomTableViewCell.m:
-(IBAction)displaySomeCellRelativePopover:(id)sender{
//passes the actions to its delegate
UIButton *button = (UIButton *)sender;
[cellActionDelegate displaySomeCellRelativePopoverWithInformation:self.info
fromButton:button
fromCell:self];
}
и в MyDetailViewController.m:
-(void)displaySomeCellRelativePopoverWithInformation:(MyCellInformationClass *)info
fromButton:(UIButton *)button
fromCell:(UIView *)cell{
UIPopoverController * popoverController = nil;
//create your own UIPopoverController the way you want
//Convert your button/view frame
CGRect buttonFrameInDetailView = [self.view convertRect:button.frame fromView:cell];
//present the popoverController
[popoverController presentPopoverFromRect:buttonFrameInDetailView
inView:self.view permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES];]
//release objects created...
}
PS: Конечно, «действие» не обязательно должно быть IBAction , и фрейм, из которого происходит всплывающее окно, не обязательно должен быть UIButton - подойдет один UIView :)