在表格視圖單元格中有一個按鈕,並且您想在按下按鈕時顯示指向該單元格的彈出窗口。
首先,使用這樣的事情在的cellForRowAtIndexPath將按鈕添加到單元:
(不必是圓角的矩形)
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setFrame:CGRectMake(100, 0, 100, 30)];
[button setTitle:@"Button" forState:UIControlStateNormal];
[button addTarget:self action:@selector(profileUser:)
forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:button];
上述情況的一個很重要的一點是,在@選擇,在profileUser之後有一個冒號(它告訴按鈕發送對自身的引用作爲profileUser的第一個參數)。這個參考可以用來確定選擇了哪個單元。
的profileUser:方法應該是這樣的:
-(void)profileUser:(UIButton *)button
{
UITableViewCell *cell = (UITableViewCell *)[[button superview] superview];
//first superview is cell.contentView
//second superview is cell
UserProfile *switchV = [[UserProfile alloc] initWithNibName:nil bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:switchV];
UIPopoverController *pop = [[UIPopoverController alloc] initWithContentViewController:navController];
[pop presentPopoverFromRect:cell.frame inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
[switchV release];
[navController release];
self.popoverController = pop; //save in property for later release
[pop release];
}
如果可能的話,離開箭頭方向UIPopoverArrowDirectionAny,讓它找出把它最好的地方。
編輯:
,以顯示與朝上的按鈕,而不是單元格中的箭頭酥料餅,用這個:
[pop presentPopoverFromRect:button.frame inView:cell
permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
然而,根據小區的屏幕上的位置,彈出窗口可能看起來不正確。除非您確定結果,否則請使用「任何」而不是「上」。
另請注意,您應該保存對popover控制器的引用,以便以後發佈(在dealloc中),否則方法中的[pop release]可能會導致崩潰。有關詳細示例,請參閱sample app Popovers。
如果您在問題中發佈代碼並解釋發生的事情與您的期望相比會更好。 – Anna 2010-11-22 00:22:09
我貼了它,它的pastie鏈接:) – Anthony 2010-11-22 00:32:38
這段代碼是否在didSelectRowAtIndexPath中?你已經聲明瞭單元格,但沒有設置它。 – Anna 2010-11-22 00:43:14