문제

Uipickerview 구성 요소에 연속 숫자 세트를 보여주고 싶지만 시계-> 타이머 애플리케이션의 초 구성 요소처럼 랩을해야합니다. 내가 활성화 할 수있는 유일한 동작은 타이머 응용 프로그램의 시간 구성 요소처럼 보이며, 여기서 한 방향으로만 스크롤 할 수 있습니다.

도움이 되었습니까?

해결책

행의 수를 다수로 설정하는 것은 쉽고 높은 가치로 시작하게 만들면 사용자가 휠을 아주 오랫동안 스크롤 할 가능성은 거의 없습니다. 일어난 일은 그들이 바닥에 부딪 칠 것입니다.

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
    // Near-infinite number of rows.
    return NSIntegerMax;
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
    // Row n is same as row (n modulo numberItems).
    return [NSString stringWithFormat:@"%d", row % numberItems];
}

- (void)viewDidLoad {
    [super viewDidLoad];

    self.pickerView = [[[UIPickerView alloc] initWithFrame:CGRectZero] autorelease];
    // ...set pickerView properties... Look at Apple's UICatalog sample code for a good example.
    // Set current row to a large value (adjusted to current value if needed).
    [pickerView selectRow:currentValue+100000 inComponent:0 animated:NO];
    [self.view addSubview:pickerView];
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    NSInteger actualRow = row % numberItems;
    // ...
}

다른 팁

여기에서 내 대답을 찾았습니다.

http://forums.macrumors.com/showthread.php?p=6120638&highlight=uipickerview#post6120638

행의 제목을 요청하면 다음을 제공합니다. 코드 :

return [rows objectAtIndex:(row % [rows count])];

사용자가 didselectrow : incomponent :, 다음과 같은 것을 사용합니다.

암호:

//we want the selection to always be in the SECOND set (so that it looks like it has stuff before and after)
if (row < [rows count] || row >= (2 * [rows count]) ) {
    row = row % [rows count];
    row += [rows count];
    [pickerView selectRow:row inComponent:component animated:NO];
}

UIPICKERVIEW는 기본적으로 포장을 지원하지는 않지만 더 많은 데이터 세트를 표시하고 선택기가 멈출 때 컴포넌트를 데이터 세트의 중간에 중앙으로 중앙에 놓아서 속일 수 있습니다.

배열을 여러 번 만들어 숫자를 여러 번 만들 수 있습니다. 0에서 23까지의 숫자를 갖고 싶을 때 배열에 넣으십시오. 우리는 이렇게 10 번을 할 것입니다 ...

NSString *stdStepper;

    for (int j = 0; j<10; j++) {
        for(int i=0; i<24; i++)
        {
            stdStepper = [NSString stringWithFormat:@"%d", i];

            [_hoursArray addObject:stdStepper];

        }
    }

나중에 우리는 이렇게 선택한 행 0을 설정했습니다

[_hoursPickerView selectRow:120 inComponent:0 animated:NO];

모든 대답은 실제로 픽커 뷰를 주기적으로 만드는 것이 아닙니다.

나는 주기적 테이블 뷰를 기준으로 만들었습니다 UIScrollView. 그리고이 테이블 뷰를 바탕으로 다시 구현합니다 UIPickerView. 당신은 이것에 관심이있을 것입니다 DLPickerView. 그리고이 선택기보기에는 모든 기능이 있습니다 UIPickerView 또한 많은 새로운 기능을 제공하지만 사용자 정의이 선택기보기가 훨씬 쉽습니다.

https://github.com/danleechina/dlpickerview

그리고 이것을 알고 있어야합니다 DLPickerView 주기적으로 스크롤은 실제로 주기적으로 스크롤됩니다. 모든 마법은 다른 수업 때문에 일어났습니다 DLTableView.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top