2011-05-25 8 views
5

Objektif C hakkında daha fazla bilgi edinin ve yapıyı doğru şekilde öğrenin.Bir UIBiewController uygulamasında UIButton uygulamasının bir alt görünümünde bir yöntemle çağrılması

"DoSomething" adlı bir yöntemi olan bir UIViewController içeren bir iOS Uygulaması var. Görünüm denetleyicimde bir görünümüm var ve bu görünümde programsal olarak oluşturduğum bir dizi UIButton var (bir düğmeyle aşağıdaki örneğe bakın). Ben düğmesine bastığınızda

enter image description here

Şimdi benim yöntemi "doSomething" aramak istiyorum. Şu anda bunu yolu şu şekildedir: my hedefe yana

[myButton addTarget:nil 
      action:@selector(doSomething:) 
    forControlEvents:UIControlEventTouchUpInside]; 

o "doSomething" adlı bir yöntem bulana kadar cevap zincirinde yukarı gider sıfırdır. Çalışıyor, ama gerçekten doğru hissetmiyor.

@protocol kullanmaya bakmaya başladım, ancak kafamı gerçekten bulamadım. Bazı öğreticilere bakıyordum ama benim için yeterince açık değil. Tablo görünümü denetleyicileri gibi protokolleri kullandım, ancak birini tanımlamak benim için yeni.

Bu özel durum için örnek almak mümkün mü?

Teşekkürler!

+0

IB'yi hiç kullanıyor musunuz? –

+0

Bu neden doğru değil mi? Cevaplayan zincirin ne için yapıldığı ve tam olarak yapılması gereken doğru şey. – leftspin

cevap

4

Hedef denetleyicide geçiş yaptığınız için ve yöntem bu nesnede çağrılır.

Düzenleme:

[myButton addTarget:controller 
      action:@selector(doSomething:) 
    forControlEvents:UIControlEventTouchUpInside]; 

Eğer UIViewController bir değişken olarak adlandırılan denetleyicisi olduğunu varsayarsak. Eğer kontrol cihazınıza bir referansınız yoksa sadece bir tane görünümünüze aktarın.

Edit2:

Görünüm arayüzü:

@property (assign) UIViewController* controller; 

Görünüm uygulaması:

- (void) viewDidLoad { 
    [super viewDidLoad]; 
    someView.controller = self; 
} 
+0

Ayrıntılı bilgi verir misiniz lütfen? Seni anladığımdan emin değilim. – Structurer

+0

Düzenleme skorulis için teşekkürler. Şimdi yaklaşıyoruz ama sanırım bunu yapmak için hala yeterince iyi değilim. Sanırım sizin için bu kadar doğal, ama benim UIViewController'ime nasıl başvuracağımı bilmiyorum, buradaki çekirdek ... – Structurer

+0

Düzenleme 2 için teşekkürler! Şimdi tamamladık ;-) Test ettim ve saat gibi çalışıyor ve bugün yeni bir şey öğrendim. Teşekkürler! – Structurer

0

yapardım yolu değerini ayarlanır: Kontrolör

@synthesize controller; 

addTarget ila self.

[myButton addTarget:self 
      action:@selector(doSomething:) 
    forControlEvents:UIControlEventTouchUpInside] 

Bu., Hedef ilave edilir, nesne üzerinde bir yöntem doSomething arayacaktır Bu durumda, bu görünümü denetleyicisi olacaktır.

+0

Teşekkürler cs.Bunu daha önce denedim ve UIViewController'a değil UIView'e gideceğini düşünüyorum. Kendime değişirsem, "örneğe gönderilmemiş bir seçici" alırım. Bu yüzden onu nil olarak değiştirdim. – Structurer

+0

Kodunuzu yayınlayabilir misiniz, böylece sorun yaşadığınız şey hakkında daha iyi bir fikrim var mı? – csano

+0

Merhaba cs, bence skorulis doğru yolda, gerçek kodu henüz bilmemek için henüz yeterince akıllı değilim ... – Structurer