0

我想在 iPad 中创建 UIPopOverController。当点击以编程方式显示的 UIBarButonItem 时,此 UIPopOverController 将打开。

    UIButton *btnRight = [UIButton buttonWithType:UIButtonTypeCustom];
    [btnRight setImage:[UIImage imageNamed:@"right.PNG"] forState:UIControlStateNormal];
    btnRight.frame = CGRectMake(0, 0, 32, 32);
    [btnRight addTarget:self action:@selector(pressDone) forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *btnRightBarItem= [[UIBarButtonItem alloc] initWithCustomView:btnRight];

    [[self navigationItem] setRightBarButtonItem:btnRightBarItem];

我的选择器代码是:

- (void)pressDone:(id)sender
{
     PopoverViewController *PopoverView =[[PopoverViewController alloc] initWithNibName:@"PopoverViewController" bundle:nil];
    self.popOver =[[UIPopoverController alloc] initWithContentViewController:PopoverView];
    [self.popOver presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}

当我使用上面的代码时,我得到了错误,

[HrOfferDetailVC pressDone]: unrecognized selector sent to instance 0x73bb670'
4

2 回答 2

1

尝试这个:

替换以下行

[btnRight addTarget:self action:@selector(pressDone) forControlEvents:UIControlEventTouchUpInside];

[btnRight addTarget:self action:@selector(pressDone:) forControlEvents:UIControlEventTouchUpInside];

解释

在按钮后添加:符号。pressDone因为您在方法定义中传递了一个参数,即

- (void)pressDone:(id)sender

而且您没有在方法调用中传递任何参数......所以,发生错误是因为在没有参数的代码中找不到该方法。

于 2013-07-23T13:25:46.087 回答
1

您的方法名称pressDone:不是pressDone

[btnRight addTarget:self action:@selector(pressDone:) forControlEvents:UIControlEventTouchUpInside];

会做这项工作

你在这里添加了目标作为 self 和 self 我认为是HrOfferDetailVC这样的方法应该在 .h 中声明并且它应该在HrOfferDetailVC.m

使用此代码显示弹出框

- (void)pressDone:(id)sender 
{ 
UIButton *buttonItem=(UIButton *)sender; 

PopoverViewController *PopoverView =[[PopoverViewController alloc] initWithNibName:@"PopoverViewController" bundle:nil]; 
self.popOver =[[UIPopoverController alloc] initWithContentViewController:PopoverView]; 

[popOver presentPopoverFromRect:buttonItem.frame inView:buttonItem.superview permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

}
于 2013-07-23T13:28:46.210 回答