11

UIPickerViewオンボタンクリックをリセットしようとしています。私の pickerview id は実行時に作成され、デリゲートは既に設定されています。ググったら見つけた

[pickerView reloadAllComponents];

しかし、これにより、ここに到達するたびにアプリがクラッシュします。

インデックス 0 のオブジェクトは「リストから選択」、次に項目です。送信ボタンがクリックされたときに、「リストから選択」がラベルの上部に残るようにしたい(選択されたインデックス: 0)。

これが私のコードです

ViewDidload

 pickerView = [[UIPickerView alloc] init];
    pickerView.delegate = self;
    pickerView.dataSource = self;

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


 // Total rows in our component.
    -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
        return [nameArray count];
    }

// Display each row's data.
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
    return [nameArray objectAtIndex: row];
    }

// Do something with the selected row.

    -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
        dlbl.hidden=YES;
        NSLog(@"You selected this: %@", [nameArray objectAtIndex: row]);
        [btnSelectDesigner setTitle:[nameArray objectAtIndex: row] forState:UIControlStateNormal]; 

    }

そして、ボタンをクリックすると:

-(IBAction)btnSubmitClicked:(id)sender{
[pickerView reloadAllComponents];
}

私が間違っていることは何か分かりますか?

ありがとう

4

3 に答える 3

32
[picker reloadAllComponents];
[picker selectRow:0 inComponent:0 animated:YES];
于 2012-06-25T14:22:50.480 に答える
9

迅速なバージョン:

picker.selectRow(0, inComponent: 0, animated: true)

于 2016-05-05T20:59:27.417 に答える
5
//use this line for going at the top of the label index 0:

[picker selectRow:0 inComponent:0 animated:YES];
于 2012-06-25T14:27:14.487 に答える