2014-06-09 23 views
7
için Swift için Yetki Yöntemleri

Sadece Swift başlayan ve almaUIPickerView

Şimdiye kadar şöyle dersime UIPickerViewDelegate eklemiş sorun bir UIPickerView için temsilci yöntemleri çağırmadan sahip:

class ExampleClass: UIViewController, UIPickerViewDelegate 

Ben Ayrıca benim UIPickerView yarattı ve bunun için temsilci ayarlayın:

@IBOutlet var year: UIPickerView 
year.delegate = self 
Şimdi

sadece Swift koduna aşağıdaki dönüm sorun yaşıyorum:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 

Herhangi bir yardım

cevap

0

mutluluk duyacağız temsilci bu yöntemi çağırmak için sorumlu değildir. Bunun yerine UIPickerView'ın veri kaynağı tarafından çağrılır. Bunlar uygulamak gerekir UIPickerView veri kaynağı tarafından çağrılan iki işlevler şunlardır: denilen olsun

// returns the number of 'columns' to display. 
func numberOfComponentsInPickerView(pickerView: UIPickerView!) -> Int 

// returns the # of rows in each component.. 
func pickerView(pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int 

bu işlevleri sağlamak için, lütfen sınıfı da veri kaynağı protokolü uygulamalıdır:

class ExampleClass: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource 

Ve senin toplayýcýsýnýn veri kaynağı ayarlanmalıdır: emin kümenizin seçici görünümü en yapmak isteyeceksiniz yüzden, aslında UIPickerViewDataSource protokolünde bir yöntem var

year.dataSource = self 
11

dataSource mülk ayrıca: year.dataSource = self. Swift-yerli yolu, bu gibi sınıf uzantılarında protokollerini uygulamak gibi görünüyor: Bu tek bir yerde protokole ilişkin tüm kodu kapsüller çünkü bir protokol güzel uygulamak için bir uzantı kullanma

class ExampleClass: UIViewController { 
    // properties and methods, etc. 
} 

extension ExampleClass: UIPickerViewDataSource { 
    // two required methods 

    func numberOfComponentsInPickerView(pickerView: UIPickerView!) -> Int { 
     return 1 
    } 

    func pickerView(pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int { 
     return 5 
    } 
} 

extension ExampleClass: UIPickerViewDelegate { 
    // several optional methods: 

    // func pickerView(pickerView: UIPickerView!, widthForComponent component: Int) -> CGFloat 

    // func pickerView(pickerView: UIPickerView!, rowHeightForComponent component: Int) -> CGFloat 

    // func pickerView(pickerView: UIPickerView!, titleForRow row: Int, forComponent component: Int) -> String! 

    // func pickerView(pickerView: UIPickerView!, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString! 

    // func pickerView(pickerView: UIPickerView!, viewForRow row: Int, forComponent component: Int, reusingView view: UIView!) -> UIView! 

    // func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int) 
} 
+1

ve eğer Gelecekte bunun hakkında fikrinizi değiştirin, tam olarak ne kaldırabileceğinizi biliyorsunuz :) – Jiaaro

+0

Tam olarak! Ve 'pragma' gitti ve '// MARK ...' yöntemi henüz işe yaramadığından, şu anda işleri organize etmenin tek yolu bu. ;) –

+0

Nate. Bu şekilde kullanarak UIPickerView cihazımın kullanıldığından nasıl emin olabilirim? – user3723426

İlgili konular