0

我的视图中有一个setAction带有本地功能的按钮。在GameOptions.m我有下一个功能:

- (void) changeSettings (UIBarButtonItem *) sender  {

// do something 
}

GameOptions和一个在.m中启动它的按钮:

[btn1 addTarget:self action:@selector(changeSettings:) forControlEvents:UIControlEventTouchUpInside];

现在我将它从他的视图移到导航控制器作为rightBrButtonItem. 这是一个具有所有设置myVC的小实例,每次我都使用它。UIViewControllernavigationBarpop ,push

   UIBarButtonItem *buttonNav1 = [[UIBarButtonItem alloc] initWithCustomView:settingsView];
        [myVC.navigationItem setRightBarButtonItem:buttonNav1];

问题是这个按钮不在他的类中,我希望它在.mGameOptions中启动相同的功能。GameOptions

我想做接下来的事情:

buttonNav1 setAction:changeSettings;

但这是不可能的,changeSetting 无法识别...

试过:buttonNav1.action = self.但我没有得到这个函数,只有没有参数的函数。我如何从该按钮调用 chnageSettingsnavigationBar

4

1 回答 1

1

您需要做的就是告知您UIBarButtonItemGameOptions对象的存在。这就是您在使用selfin 时所做的:

[btn1 addTarget:self action:@selector(changeSettings:) forControlEvents:UIControlEventTouchUpInside];

在实例化你的之后UIBarButtonItem *buttonNav1,你可以给它发送消息addTarget:action:forControlEvents:,或者,如果你想使用setAction,别忘了也使用setTarget

所以现在,您的问题是:将GameOptions对象的指针传递给UIBarButtonItem;)的最优雅/最有效的方法是什么

于 2012-09-29T12:57:57.550 回答