UIPopOverController, указывающий на объект внутри UITableViewCell? - PullRequest
4 голосов
/ 30 декабря 2011

У меня есть UIButton внутри UITableViewCell.Когда пользователь касается кнопки ячейки, я хочу отобразить UIPopoverController, указывающий на кнопку.

В данный момент у меня есть следующий код в делегате ячейки (делегат - это контроллер представления, которому принадлежит UITableView):

-(void) onStatusButtonTouched:(UIButton *)aButton{
    StatusPickerController *statusPicker = [[StatusPickerController alloc] init];

    _popOver = nil;
    _popOver = [[UIPopoverController alloc] initWithContentViewController:statusPicker];

    [_popOver setDelegate:self];

    [_popOver presentPopoverFromRect:aButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
    [_popOver setPopoverContentSize:CGSizeMake(100, 352)];   
}

С этим кодом всплывающее окно всегда указывает на верхнюю часть представления, потому что позиция у кнопки относительно ее ячейки.

Мой вопрос, как можноЯ знаю абсолютную позицию кнопки, чтобы указывать на нее?Есть ли способ решить это?

Ответы [ 2 ]

8 голосов
/ 30 декабря 2011

вместо следующей строки

[_popOver presentPopoverFromRect:aButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];

попробуйте следующую строку

[_popOver presentPopoverFromRect:aButton.frame inView:[aButton superview] permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
2 голосов
/ 30 декабря 2011

Чтобы немного расширить ответ Адиры: рамка кнопки находится в системе координат суперпредставления кнопки.Если вы хотите поместить его в self.view, вам придется преобразовать его в систему координат self.view.Это можно сделать с помощью метода UIView convertRect:(CGRect) toView:(UIView *), например:

CGRect presentFromRect = [self.view convertRect:aButton.frame fromView:aButton.superview];
[_popOver presentPopoverFromRect:presentFromRect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];

Поскольку это очень распространенная ситуация при использовании всплывающих окон, Apple предоставила ярлык.Это ответ, который дала Адхира.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...