2011-12-03 4 views
0

특정 클라이언트를 선택하기 위해 뷰에서 UISegmentedControl을 사용하고 있습니다. 그런 다음보기가 닫힐 때 고유 한 세그먼트 제목에서 내 데이터 모델의 NSString 속성을 설정합니다. 모든 것은 내가 기대했던 것과 똑같이 작동한다. 모델에 저장된 내용에 따라 뷰를 다시로드하면 viewDidLoad에 다음 코드로 UISegmentedControl을 설정합니다. 즉, 모델에서 문자열 특성을 읽고이를 색인으로 변환하고 올바른 세그먼트를 선택하여 모델에 저장된 클라이언트를 반영합니다.세그먼트 인덱스를 설정하는 UISegmentedControl 메소드?

if ([self.itemToEdit.client isEqualToString:@"John"]) { 
     myIndex = 3; 
    } else if ([self.itemToEdit.client isEqualToString:@"David"]) { 
     myIndex = 2; 
    } else if ([self.itemToEdit.client isEqualToString:@"Paul"]) { 
     myIndex = 1; 
    } else if ([self.itemToEdit.client isEqualToString:@"Stephen"]) { 
     myIndex = 0; 
    } 

    self.reportEditorClient.selectedSegmentIndex = myIndex; 

모든 것이 계획대로 작동합니다. 단지 아주 까다 롭습니다. 이 작업을 수행하지만 아무것도 찾을 수없는 UISegmentedControl 메서드가 있는지 확인하기 위해 설명서를 샅샅이 조사했습니다. 더 나은 접근 방법이 있습니까, 아니면 여기에 맞는 줄에 있습니까? (이 약간 깔끔한 비록) 코드 현명한 서식

답변

0

이 이름 - 인덱스 매핑을 넣어 이름의 배열 다음

NSArray *names = [NSArray arrayWithObjects:@"John", @"David", @"Paul", @"Stephen", nil]; 

self.reportEditorClient.selectedSegmentIndex = [names indexOfObject:self.itemToEdit.client]; 

를 사용할 수 있습니다 사전이 있다면, if-else의이 체인은 거의 하나의 라이너가됩니다.

+0

NSDictionary를 살펴본 결과, 코드가 아닌 모델을 변경하여 나중에 증명하기가 쉬워 진다고 말했듯이이 방법을 사용할 것이라고 생각합니다. 포인터 주셔서 감사. – Hoppo

관련 문제