2012-03-07 14 views
6
Aşağıdaki kodu

setAction benim PopUpButton devre dışı olduğunu

[myPopUpButton insertItemWithTitle:@"--Select one--" atIndex:0]; 
[myPopUpButton addItemsWithTitles:[NSArray arrayWithObjects:@"1.One",@"Two",@"Three", nil]]; 

[myPopUpButton sizeToFit]; 
[myPopUpButton setAction:@selector(popUpAction:)]; 
[fullBrowserView addSubview: myPopUpButton]; 

//PopUp Action 
-(void)popUpAction:(id)sender 
{ 
    NSLog(@"popUpAction"); 
} 

Ben PopUpButton tıkladığınızda, PopUpButton menü öğeleri devre dışı bırakılır ile programlı benim NSPopUpButton oluşturduk

. Arayüz oluşturucu kullandığımda, sadece IBAction ile çalışıyor.

Bu setAction neden NSPopUpButton için çalışmıyor?

cevap

12

İletiyi göndermek için hedef hedef ayarlamıyor gibi görünüyor. Yani, kodda ekleyin:

[myPopUpButton setTarget:self]; 

popUpAction: yöntem aynı sınıfta olduğunu varsayarak.

Interface Builder'ı kullanırken, hedefe seçici eylemi kablolar. Bu çağrı için belgelerine

:

- (void)setTarget:(id)anObject

birNesne nil ama kontrolü hala atanan geçerli eylem mesajı varsa, uygulama yanıt verebilir bir nesne arayan cevap zincirini izleyen mesaja Senin durumunda

, iletiye yanıt hiçbir nesne yoktur.

2

myPopUpButton bir hedef ve eylem olsa bile, ayrıca eklerim gerekebilir:

[myPopUpButton setAutoenablesItems:NO]; 

Aksi takdirde, düğme her tıklandığında, otomatik olarak menüsündeki tüm öğeleri devre dışı bırakabilir. (Bu sorunun eski olduğunu biliyorum, ancak başkalarına yardımcı olması durumunda bu çözümü gönderiyorum).