簡體   English   中英

UIPickerView從UISegmentedControl更新

[英]UIPickerView updating from UISegmentedControl

我正在嘗試根據從UISegmentedControl中選擇的索引,使用不同的NSArray數據更新單個UIPickerView。 當前,當我更改控件時,numberOfRowsInComponent不會更新,並且titleForRow僅在滾動選擇器時才會更新。

NSArrays填充在viewDidLoad中,並且我在SegmentedControl的IBAction上使用reloadAllComponents方法。

@synthesize subnetView, classControl;

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {

    //One column

    return 1;
}

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {

    //set number of rows

    if (classControl.selectedSegmentIndex == 0){
        NSLog(@"Class A Rows %d", [classAArray count]);
        return classAArray.count;
    }
    else if (classControl.selectedSegmentIndex == 1){
        return classBArray.count;
    }
    else if (classControl.selectedSegmentIndex == 2){
        return classCArray.count;
    }
    return 0;
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {

    //set item per row

    if (classControl.selectedSegmentIndex == 0){
        NSLog(@"Class A Rows %d", [classAArray count]);
        return [classAArray objectAtIndex:row];
    }
    else if (classControl.selectedSegmentIndex == 1){
        return [classBArray objectAtIndex:row];
    }
    else if (classControl.selectedSegmentIndex == 2){
        return [classCArray objectAtIndex:row];
    }
    return 0; 
}

-(IBAction)classChange{

    [subnetView reloadAllComponents]; 
}

基於在接口構建器中選擇哪個選擇器“選擇”,選擇器將加載正確的數組和行數。 基於此代碼,當選擇元素較少的數組時,numberOfRowsInComponents不會更新,並且在到達較小數組的末尾時應用程序將崩潰。

所以我有兩個問題:

  1. 僅在滾動時才更新元素。
  2. 執行reloadAllComponents方法時,行數不會更新。

謝謝收聽!

我以前看過 通常,這是由於未連接pickerview插座引起的,實際上沒有調用reloadAllComponents 但是,當滾動連接的數據源和委托方法時,它們仍然有效。

可以使用以下方法登錄商店的值來輕松檢查:

NSLog(@"%@",subnetView);

如果它如我所料記錄(NULL) ,則只需連接您的IB插座就可以完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM