문제

저는 .NET 프로그래머이고 Toingive C를 처음 사용합니다.

.NET 드롭 다운리스트처럼 작용하는 uipickerview를 만들려고합니다. 사용자는 텍스트 목록을보고 하나를 선택하고 선택한 값 (ID)은 코드에 사용됩니다.

나는 이것을 알아 내려고 거의 반나절 동안 탐색을 해왔다. 문자열 목록, Mulitple 구성 요소가있는 픽커보기 및 종속 구성 요소가있는 픽커보기가있는 일반 Pickerview를 추가 할 수 있습니다.

도와주세요.

도움이 되었습니까?

해결책

NSDictionary를 UIPICKERVIEW의 데이터 소스로 사용할 수 있지만 이미 키/값 쌍이 포함 된 사용자 정의 NSObject가있는 경우 해당 객체의 NSARRAY를 데이터 소스로 사용하는 것이 더 간단합니다.

사용자 정의 객체가 PlanetID (int) 및 PlanetName (NSString)을 가진 Planet이라고 가정하십시오. 피커에 나타나기를 원하는 순서 대상으로 객체가있는 행성이라는 nsarray를 만듭니다 (PlanetID 순서가 필요하지 않음).

TitleForrow에서는 다음과 같습니다.

return ((Planet *)[planets objectAtIndex:row]).planetName;

DidSelectrow에서 선택한 행성을 얻으려면 :

Planet *selectedPlanet = (Planet *)[planets objectAtIndex:row];

//
//
nsDictionary를 사용하면 키 값을 선택기의 행 번호에 매핑해야합니다. 이를 수행하는 한 가지 방법은 키 값을 행 번호로 설정하고 사용자 정의 객체를 값으로 추가하는 것입니다.

따라서 사전은 다음과 같이 만들어집니다.

NSArray *keys = [NSArray arrayWithObjects:@"0", @"1", @"2", @"3", nil];
NSArray *values = [NSArray arrayWithObjects:mercury, venus, earth, mars, nil];
items = [[NSDictionary dictionaryWithObjects:values forKeys:keys] retain];

TitleForrow에서는 다음과 같습니다.

NSString *itemKey = [NSString stringWithFormat:@"%d", row];
Planet *planet = (Planet *)[items objectForKey:itemKey];
return planet.planetName;

DidSelectrow에서는 다음과 같습니다.

NSString *itemKey = [NSString stringWithFormat:@"%d", row];
Planet *selectedPlanet = (Planet *)[items objectForKey:itemKey];
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top