Soru UIPickerView'i (yeni veri dizisiyle) düğmeye basarak yeniden nasıl yüklerim / yenilerim?


enter image description here

Bir eyalet seçtiysem, eyaletler / iller için bir örnek görmedim, ama yukarıda gösterildiği gibi, ABD / Can / Mex için bir seçici olarak alay ettim. Eğer UIPickerView için NSMutableArray dinamik olarak değiştirebilir ve sonra her zaman US / Can / Mex düğmeleri tıklattığınızda her zaman yeniden yükleyebilirsiniz ?? Bunu yapmayı nasıl yaparım. Hangi yaklaşımı kullanırım? Doğru yönde bir ipucu için yeni başlayan birini işaret edecek birini arıyoruz.


51
2017-12-22 00:58


Menşei




Cevaplar:


Veri kaynağını ve temsilci uygulamak zorunda kalacaksınız.

Bir düğmeye bastığınızda, uygun diziye dizi işaretçisi ayarlayın.

aramaktan [thePicker reloadAllComponents];

-(IBAction) usButtonPressed:(id)sender{
    self.inputArray = self.usArray;
    [self.thePicker reloadAllComponents];
}

-(IBAction) mexicoButtonPressed:(id)sender{
    self.inputArray = self.mexicoArray;
    [self.thePicker reloadAllComponents];
}

veri kaynağı yöntemleri:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 1;
}


- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    return [self.inputArray count];
}

temsilci yöntemleri:

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    return [self.inputArray objectAtIndex:row];
}

104
2017-12-22 01:11



Beni doğru yöne işaret ettiğin için teşekkürler. Ben yeni biriyim. Bunun için bir sınıf yöntemi olduğunu görmek harika. ve bu "Bu yöntem çağrıldığında, seçici görünüm tüm bileşenlerin yeni veriler için temsilci sorgulamak için neden olur" çok güzel. Benim mevcut UI Seçici veri kaynağı ve delege yöntemleri vardır :-) böylece iyi. Bir kitap kullanıyorum, sınıf belgelerinin örnek yöntemlerinde cevabın doğru olduğunu bilmiyordum. Tekrar teşekkürler. - jim4iOS
teşekkürler dostum! çok yardımcı oldu! - fabersky


Swift: xcode 6.1

// Seçici bileşenini yeniden yükle (Bunu tetikleme eylemi veya düğmesinin içinde kullan)

self.pickerControl.reloadAllComponents();

14
2017-11-12 07:19



Bu soruya hiç cevap vermiyor. - vikingosegundo


Arayarak

thePicker.delegate = self;

Yine, pickerview'i yeni bilgilerle yenilemeyi zorlayabildim


5
2018-06-23 16:45



hızlı 3, bu çalıştı. - Vaibhav Saran
reloadAllComponents çalışmıyor - Sumit


Xcode-8 hızlı 3 içinde sadece yazım didSelectRow işlevi gibi yazıyor

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {


        self.view.endEditing(false)
        yourPickerView.selectRow(0, inComponent: 0, animated: true)
        yourPickerView.reloadAllComponents();

}

3
2017-10-02 06:03





Birden fazla toplayıcı kullanın veya hangi verilerin yüklenmesi gerektiğini belirlemek için bir anahtar bloğu kullanın ve seçiciyi yeniden yükleyin.


2
2017-12-22 01:12





Düğmenizde harekete basın,

[self.pickerView selectRow:0 inComponent:0 animated:YES];

2
2018-05-12 08:34





Swift 3 ve 4

Aynı problem vardı ama çözüm işe yaramadı.

sonra DispatchQueue kullanırım çalışır

DispatchQueue.main.async(execute: {
        self.picker.delegate = self
        self.picker.dataSource = self
        if self.pickerData.count > 0 {
            self.pickerTextField.text = self.pickerData[0]
            self.pickerTextField.isEnabled = true
        } else {
            self.pickerTextField.text = nil
            self.pickerTextField.isEnabled = false
        }
    })

0
2018-04-01 19:28