Добавление всплывающего окна в TableViewCell

Я боролся с этим некоторое время и надеялся, что кто-нибудь может пролить свет на то, почему это не работает.

Я просто пытаюсь реализовать Popover в TableViewCell. Вот код..

TodoView.m

- (void)tableView:(TUITableView *)tableView didClickRowAtIndexPath:(TUIFastIndexPath *)indexPath withEvent:(NSEvent *)event {

    // MyViewController is a TUIViewController with a nib called MyView with just a button in it
    MyViewController *t = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil];
    TUIView *theView = [[TUIView alloc] initWithFrame:NSMakeRect(0, 0, 300, 300)];

    TUIPopover *myPopover = [[TUIPopover alloc] initWithContentViewController:t];
    [myPopover showRelativeToRect:NSMakeRect(0, 0, 300, 300) ofView:theView preferredEdge:NSMaxYEdge];
}

Некоторое время ничего не появлялось. Я мог сказать, что что-то происходит, потому что само окно теряло фокус, как если бы всплывающее окно было там.

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

TUIPopover взят из Twitter UIKit Framework.

Некоторые возможности...

1) Поповер нельзя увидеть поверх CGFillRect?

TodoTableViewCell.m

- (void)drawRect:(CGRect)rect
{
    CGRect b = self.bounds;
    CGContextRef ctx = TUIGraphicsGetCurrentContext();

    CGContextSetRGBFillColor(ctx, 247.0/255, 247.0/255, 247.0/255, 1);
    CGContextFillRect(ctx, b);
}

2) Поповер не помещается внутри TableViewCell и не виден

У кого-нибудь есть мысли?


person Brian Weinreich    schedule 06.05.2013    source источник


Ответы (1)


Действительно простой ответ:

Я забыл установить размер всплывающего окна!

Итак, для всех, кто задается вопросом, почему их всплывающее окно не работает, убедитесь, что вы установили размер содержимого!

TUIPopover *p = [[TUIPopover alloc] initWithContentViewController:commentsViewController];
[p setAnimates:TRUE];
[p setContentSize:CGSizeMake(300, 350)];
[p setBehaviour:TUIPopoverViewControllerBehaviourTransient];
[p showRelativeToRect:b.bounds ofView:b preferredEdge:CGRectMinYEdge];
person Brian Weinreich    schedule 14.05.2013