program tip

UIPickerView에서 선택한 값을 얻는 방법

radiobox 2020. 10. 21. 07:53
반응형

UIPickerView에서 선택한 값을 얻는 방법


UIDatePicker를 사용하면 다음과 같은 것을 사용할 수 있습니다.

NSDate *myDate = picker.date;

하지만 내 관점에서 UIPickerView를 사용하고 있습니다. 비슷한 방법으로 값을 선택할 수 있습니까? 아니면 didSelectRow 유형의 메소드를 설정해야합니까?

업데이트 :이 코드는 1 개의 구성 요소가있는 선택기에서 작동합니다.

    NSInteger row;
    NSString *weightSelected;

    row = [repPicker selectedRowInComponent:0];
    weightSelected = [pickerArray objectAtIndex:row];

두 가지 구성 요소로 내 선택기 에이 코드를 지 쳤지 만 멈췄습니다.

    NSInteger row1, row2;
    NSString *weightSelected1;
    NSString *weightSelected2;

    row1 = [repPicker selectedRowInComponent:0];
    row2 = [repPicker selectedRowInComponent:1];
    weightSelected1 = [pickerArray objectAtIndex:row1];
    weightSelected2 = [pickerArray objectAtIndex:row2];
    NSString *weightSelected = [NSString stringWithFormat:@"%@.%@", weightSelected1, weightSelected2];

다음과 같은 방법으로 얻을 수 있습니다.

NSInteger row;
NSArray *repeatPickerData;
UIPickerView *repeatPickerView;

row = [repeatPickerView selectedRowInComponent:0];
self.strPrintRepeat = [repeatPickerData objectAtIndex:row];

사용자 정의 ViewController 클래스에서 pickerView와 동일한 함수를 사용하여 선택기의 모든 섹션에서 선택한 항목의 텍스트를 가져올 수 있습니다.

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component

선택한 항목 사용

[myPickerView selectedRowInComponent:0]

따라서 myPickerView의 두 번째 섹션에서 현재 선택된 값을 사용하여 사용자 지정 셀의 레이블 텍스트를 설정하려면 (아마도보기 컨트롤러의 속성)

[cell.label setText:[self pickerView:myPickerView titleForRow:[myPickerView selectedRowInComponent:1] forComponent:1]];

각 섹션에 대해 : 1s를 : 2s 등으로 변경하십시오.


이것이 내가 한 일입니다.

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

    selectedEntry = [allEntries objectAtIndex:row];

}

selectedEntry이며 NSString선택기보기에서 현재 선택된 항목을 보유합니다. 나는 Objective C를 처음 접했지만 이것이 훨씬 쉽다고 생각합니다.


다음 방법을 사용하여 주어진 구성 요소에 대해 선택한 행에 액세스 할 수 있습니다.

- (NSInteger)selectedRowInComponent:(NSInteger)component

그렇지 않으면 위임 함수를 구현하는 것이 유일한 다른 옵션입니다.


didSelectRowa UIPickerView는 임의의 수의 구성 요소를 가질 수 있으므로 delegate 메서드 를 사용해야합니다 . "objectValue"또는 이와 유사한 것은 없습니다. 전적으로 귀하에게 달려 있습니다.


응용 프로그램과 동일한 방식으로 선택기의 대리인에게 문의해야합니다. 내 UIPickerViewDelegate 내에서 수행하는 방법은 다음과 같습니다.

func selectedRowValue(picker : UIPickerView, ic : Int) -> String {

    //Row Index
    let ir  = picker.selectedRow(inComponent: ic);

    //Value
    let val = self.pickerView(picker,
                              titleForRow:  ir,
                              forComponent: ic);
    return val!;
}

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
   weightSelected = [pickerArray objectAtIndex:row];
}

이것은 내 대답입니다

- (IBAction)Result:(id)sender 
{
   self.statusLabel.text = DataSource[[pickerViewTool selectedRowInComponent:0]];

}

참고 URL : https://stackoverflow.com/questions/5725580/how-to-get-selected-value-from-uipickerview

반응형