将Popover添加到UITableViewCell

时间:2013-05-06 01:39:40

标签: objective-c cocoa nspopover twui

我一直在努力解决这个问题,希望有人可以解释为什么这不起作用。

我只是尝试在TableViewCell上实现Popover。这是代码..

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];
}

有一段时间,什么都不会出现。我可以告诉一些事情发生了,因为窗口本身会失去焦点,好像一个Popover 那里。

有时我看到一个非常小的光点 - 像一个2px乘2px的小矩形。很难看到它,在屏幕上看起来像死像素,但有时在我运行此代码时会出现。

TUIPopover来自Twitter UIKit Framework

一些可能性......

1)在CGFillRect上看不到popover?

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)popover不适合TableViewCell,无法看到

有人有任何想法吗?

1 个答案:

答案 0 :(得分:1)

答案非常简单:

我忘记设置popover的内容大小了!

因此,对于其他任何想知道为什么弹出窗口不起作用的人,请确保设置内容大小!

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];