1

我有一个名为 as 的按钮Sync。单击它时,我需要显示一个 popOverController,它在UITableView. 我在.m文件中使用了以下代码行来声明UIButtoninViewWillAppear函数:

UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithTitle:@"Sync"
                                                               style:UIBarButtonItemStyleBordered
                                                              target:self
                                                              action:@selector(syncAction)] ;

syncAction 的代码是:

- (void)syncAction:(id)sender{


Sync = [[SyncTableViewController alloc] initWithStyle:UITableViewStylePlain];


Sync.syncDelegate = self;
self.SyncTableViewPopover = [[UIPopoverController alloc] 
                                   initWithContentViewController:Sync];               

[self.SyncTableViewPopover presentPopoverFromBarButtonItem:sender 
                                        permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];


}

但是,但是,在运行应用程序时,我收到以下错误::

[splitViewXXXXViewController syncAction]: unrecognized selector sent to instance 0x6b70660

2012-07-02 15:35:59.549 splitView[895:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[splitViewXXXXViewController syncAction]: unrecognized selector sent to instance 0x6b70660'

我无法解决它。有人可以帮我整理一下吗??谢谢并恭祝安康。

4

3 回答 3

2

您必须使用@selector(syncAction:)

UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithTitle:@"Sync"
                                                           style:UIBarButtonItemStyleBordered
                                                          target:self
                                                          action:@selector(syncAction:)] ;

这将解决您的问题

于 2012-07-02T10:20:55.423 回答
2
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithTitle:@"Sync"
                                                           style:UIBarButtonItemStyleBordered
                                                          target:self
                                                          action:@selector(syncAction:)] ;

确保你自己(splitViewXXXXViewController)在这里有一个

- (void)syncAction:(id)sender;

在其标头中声明的方法,以及

action:@selector(syncAction:)]

不要忘记添加分号。

于 2012-07-02T10:23:02.010 回答
1

调用选择器时,您缺少额外的冒号“:”。

于 2012-07-02T10:20:20.137 回答