2011-12-30 94 views
4

我在UITableViewCell內有UIButton。當用戶觸摸單元格的按鈕時,我想要顯示指向該按鈕的UIPopoverControllerUIPopOverController指向一個UITableViewCell內的對象?

目前,我在小區的委託下面的代碼(委託是擁有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)]; 
} 

有了這個代碼,彈出了總是在的頂部指向查看,因爲按鈕的y位置與其單元相關。

我的問題是,我怎麼能知道按鈕的絕對位置,以指向它?有什麼方法可以解決嗎?

回答

8

取而代之的是以下行

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

的請嘗試以下行

[_popOver presentPopoverFromRect:aButton.frame inView:[aButton superview] permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES]; 
+0

謝謝,這是正確的答案。 – 2011-12-30 11:47:17

+0

當答案完全正確的時候就喜歡它,謝謝! – Tim 2012-02-06 12:02:57

+0

@Tim,您隨時歡迎您! – Ilanchezhian 2012-02-06 12:05:35

2

要通過Aadhira擴大了答案一點:按鈕的框架是按鈕的上海華盈的座標系統相同。如果你想把它放在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]; 

因爲這是一個很常見的情況使用popovers時,蘋果公司提供了一個快捷方式。這是Aadhira給出的答案。

+0

感謝您對convertRect的提示:(CGRect)toView:(UIView *) – 2011-12-30 12:53:30

相關問題