2016-06-24 2 views
0

임시 수정에 대해 조금 이상한 질문이 있습니다. 끔찍한 이유로 3 개의 세그먼트로 된 세분화 된 컨트롤이 있지만 세 개의 tableView 데이터 소스 안에 각 세분화 된 컨트롤 세 개의 인스턴스가 있습니다 (묻지 않음, 최종 솔루션이 아니기를 기대합니다 ...)세그먼트 화 된 컨트롤 세그먼트가 변경되지 않도록 허용합니다.

어쨌든이 끔찍한 설정으로 인해 새 세그먼트를 선택하면 세그먼트 화 된 컨트롤의 인스턴스 A에 새 인덱스가 선택됩니다. 그런 다음 데이터 소스를 스왑하고 reloadData을 테이블에 호출합니다. 이제 인스턴스 A와 동일한 인덱스를 가진 세그먼트 화 된 컨트롤의 인스턴스 B가 선택되었습니다. 원래 세그먼트를 선택하면 인스턴스 B는 해당 인덱스를 새 인덱스로 설정하고 데이터를 다시로드합니다. 그러면 인스턴스 A가 표시됩니다. 그러나 인스턴스 A에는 여전히 이전 색인이 선택되어 있으므로 선택 항목에 잘못된 색인이 표시됩니다.

저는 현재이 탭에 대한 델리게이트 콜백에서 선택된 색인을 수동으로 재설정하여이 문제를 해결하고 있습니다. 그러나 이상적이라고 생각되는 부분은 분할 된 컨트롤에 선택 항목을 변경하지 못하도록 지정하는 것이지만 사용자가 계속 상호 작용할 수 있기를 원합니다. 그게 가능합니까? 나는 이것이 끔찍한 해결책이라는 것을 깨닫는다. 다시 한번, 미래에 그것을 바꿀 수 있기를 바란다.

답변

1

마지막 단계에서 세그먼트 컨트롤의 인스턴스 A가 다시 표시되면 selectedSegmentIndex 속성을 사용하여 세그먼트를 원하는 세그먼트로 설정하려면 cellForRowAtIndexPath를 작성해야합니다. 이렇게하면 인스턴스 A가 다시 표시 될 때 올바른 인덱스가 표시됩니다.

+0

새로운 데이터를 모두 가져온 후에 세그먼트를 올바른 세그먼트로 다시 설정하면 지금과 비슷한 매우 유사한 작업이 진행됩니다. 그러나 이것은 셀로 분할 컨트롤을 가지고 있기 때문에 처음에는 해킹이지만,이 수정의 "해킹"을 유지하려고하고 싶습니다, 이것은 해커를 느낍니다. 이것은 세계에서 더 나쁜 것은 아닙니다. 가능한 한 최소. –

+0

오래 전에 항해했던 "해킹 된"배처럼 들립니다. 이제 당신은 제대로 수행 한 엉망을 만들기 위해 노력하고 있습니다. –

관련 문제