0

我在我的視圖中有一個按鈕setAction到本地函數。 在GameOptions.m我有下一個功能:從UIBarButtonItem調用函數

- (void) changeSettings (UIBarButtonItem *) sender { 

// do something 
} 

和一個按鈕,啓動它在GameOptions的.m:

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

現在我把它從他的視圖到導航控制器作爲rightBrButtonItemmyVC是小號UIViewController的一個實例,其中包含所有navigationBar設置,每次我使用pop ,push即可。

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

的問題是,這個按鈕是不是在自己的GameOptions類,我想它開始執行同樣的功能GameOptions .M。

我想這樣做的下一件事:

buttonNav1 setAction:changeSettings; 

但它是不可能的,在changeSetting無法識別...

嘗試:buttonNav1.action = self.但我沒有得到這個功能,只是功能沒有參數。 我如何可以打電話從按鈕chnageSettings在navigationBar

回答

1

所有你需要做的是告訴你UIBarButtonItemGameOptions對象的存在。 這是在使用self你在做什麼:

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

instanciating您UIBarButtonItem *buttonNav1剛過,就可以向它發送消息addTarget:action:forControlEvents:或者,如果你想使用setAction,不要忘記也用setTarget

所以,現在,你的問題是:什麼是最優雅/效率的方式向GameOptions對象的指針傳遞到UIBarButtonItem;)

+0

我不能送'addTarget','buttonNav1addTarget:動作...'別不要給我那個選擇。當我試着:'buttonNav1.action:self.'我沒有得到這個函數,只有沒有參數的函數。 – vadim

+0

你有沒有嘗試過:'buttonNav1.target = myGameSettings'和'buttonNav1.action = @selector(changeSettings:)'? – teriiehina

+0

你的意思是'myGameSettings'。我試過'buttonNav1.action = @selector(changeSettings:)',並且通過它的語法很好,通過構建,但是按鈕甚至在觸摸它時沒有按下。 – vadim