UIBopOverController的UIBarButton函数错误 - 目标C.

时间:2012-07-02 10:18:13

标签: iphone objective-c ios xcode ipad

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

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'

我无法解决它。有人可以帮我解决一下吗?谢谢和问候。

3 个答案:

答案 0 :(得分:2)

您必须使用 @selector(syncAction :)

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

这将解决您的问题

答案 1 :(得分:2)

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

确保你的自我(splitViewXXXXViewController)有一个

- (void)syncAction:(id)sender;

在标题中声明了方法,也是

action:@selector(syncAction:)]

不要忘记添加分号。

答案 2 :(得分:1)

你错过了额外的冒号':'在调用你的选择器时。