2015-09-26 18 views
5

iOS geliştirme için hızlı öğrenmek için bir yapılacaklar listesi türü uygulaması yazıyorum. Gezinme çubuğunda, sağ tarafta bir ayar düğmesi vardı ve bir kişi masa görünümünde bir düğmeyi tıkladığında, listeye yeni bir öğe ekleyebilirler. Bu, çubuğun sol tarafında görünecek bir "iptal" düğmesine ve sağ tarafta görünecek bir "ekleme" düğmesine neden olur. Ancak, kişi bittiğinde, bu düğmeler kaybolur ve bu yüzden program tuşunu seggeye çağırması gereken bir işleve çağrı yaparak yeniden programladım. Seçici benim hızlı UIBarButtonItem üzerinde çalışmaz

self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(named: "modify"), style: UIBarButtonItemStyle.Plain, target: nil, action: Selector("showSettings:")) 

Bu

gezinme çubuğu üzerindeki düğme yaratmak koddur (ve aslında oluşturulur)

func showSettings(sender: AnyObject?) { 
    print("segueShouldBeDone!") 
    performSegueWithIdentifier("showSettings", sender: sender) 
} 

Ve bu segue çekmek gerekiyor fonksiyondur (ı baskı eklendi en azından çağrılmış olup olmadığına bakın, ve değil).

Aynı problemi kodumda başka bir yerde yaşadım, ancak tamir etmekten vazgeçtim çünkü o zaman benim için o kadar önemli değildi. Ancak şimdi uygulamanın nasıl çalıştığına müdahale ediyor, bu yüzden nasıl düzeltileceğini bilmek istedim.

Herhangi bir yardım harika olurdu.

+0

@LeoDabus Haklı olmanıza rağmen bunu yapmalıydım, aslında hiçbir şeyi değiştirmedi, ne tür bir boggles beni. Görüntü zaten gösteriliyordu. – AugustoQ

cevap

10

Bar düğmesi öğesinin hedefi için self yerine nil belirttiğiniz için showSettings: seçiciniz çağrılmıyor.

self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(named: "modify"), style: UIBarButtonItemStyle.Plain, target: self, action: Selector("showSettings:")) 

Bu showSettings: yöntem bu kod satırı içerir aynı sınıfta olduğunu varsayalım: çizgisini değiştirin.

Bu başlatıcıya ait belgeleri okuyun, özellikle target parametresiyle ilgili bilgileri okuyun.

+0

Evet, bunu çözdü. Ancak, showSettings işlevim herhangi bir parametre almadığında bile (ve showSettings'i bir seçici olarak kullandım), işe yaramadı. Segue gönderenin 'nil'den farklı olması mı gerekiyor? Bunu kullandığım diğer yer (soruda belirtildiği gibi), herhangi bir parametre almadı ve işlev de çağrılmadı. Bu beni şaşırtıyor çünkü “hedef” ile “Ekle” ve “İptal” butonlarını oluşturmak için kullandım: nil', ve iyi çalışıyorlar. – AugustoQ

+0

'UIBarButtonItem' başlatıcısına '' nil' yerine 'self' işlevi, 'showSettings:' yönteminize geçirilen 'gönderici' parametresiyle ve segue ile ilgili hiçbir şeyle hiçbir ilgisi yoktur. – rmaddy

+0

Diğer UIBarButtonItems'leri nil' nü hedeflediklerinde neden çalıştı ve diğer ikisi de yapmadı? Herhangi bir fikir? – AugustoQ

İlgili konular