2012-04-04 5 views
0

좋아, 그래서 내가 UITableView에 표시되는 머리글/바닥 글에 대한 액세스 권한을 얻으려면이 문제가 있습니다. 또한, 나는 UITableView의 하위 클래스에서이 작업을 수행 할 필요가있다. (따라서 단순히 UITableView Delegate의 뷰에 태그를 할당 할 수 없다.) UITableView는 보이는 머리말과 꼬리말의 배열을 유지하지만 개인적으로 asinine이라고 생각하는 서브 클래스에도 배열에 대한 액세스를 제공하지 않습니다.UITableView 머리글/바닥 글 가져 오기

맞춤 드래그 앤 드롭 삽입/이동 사용자 인터페이스를 제공 할 수 있도록이 기능이 필요합니다. 나는 애플의 자체 재배치 인터페이스와 거의 똑같이 작동하도록 노력하고있다. 물론 다른 테이블에서 드래그 할 수있는 능력과 같은 커스텀 구현을 사용한다. 모든 것은 머리글/바닥 글을 제외하고는 완벽하게 작동합니다.

현재 나는 UITableView의 모든 하위 뷰를 반복하여 해킹하려고하고있다. UITableView의 유일한 하위 뷰는 backgroundView, UITableViewCells 및 Headers/Footers입니다. 그래서 난 그냥 UITableViewCells (아주 쉽게), 배경보기 (또한 쉬운) 및 어떤 머리글/바닥 글 (너무 쉽지 않음) 확인해야합니다. 나는 내가이 방법으로 할 수 있다고 확신하지만, 확실히 해킹이며 가능한 한 더 좋은 방법을 찾고 싶다.

UPDATE

나는 - (void) setDelegate:(id<UITableViewDelegate>)delegate 메서드를 재정의하고, 대리인이 머리글/바닥 글을 생성하기 위해 적절한 선택기에 응답하는지 (적절 BOOL의 설정)을 확인하고 있습니다. 이것은 header -> cells -> footer의 진행이 예측 가능하기 때문에 특정 하위 뷰가 무엇인지 결정하는 것이 훨씬 쉽습니다.

답변

0

당신은 UITableView 대리자 메서드를 사용할 수 없다고하지만 UITableView 하위 클래스 개체를 자체 대리자로 만드는 것을 고려 했습니까? realDelegate라는 하위 클래스에 별도의 속성을 만들고 다른 대리자 호출을 전달합니다.

+0

재미있는 아이디어입니다. 내가 볼 수있는 유일한 문제는 UITableView가 대리자가 응답하는 내용을 기반으로 동작을 변경하는지 여부가 확실하지 않다는 것입니다. 그것은 하위 클래스를 자체 대리자로 구현 한 다음 대리자 일지라도 모든 것에 응답해야합니다. 아마도 그 일을 할 수있는 방법이있을 수 있습니다. 따라서 현재의 접근 방식이 효과가 없다면 다음 라인에 있습니다. :) –

+0

자, 해결책이 효과가 있습니다. 델리게이트와 함께 많은 어려움을 겪지 않았으며 제대로 작동하게하려면 모든 머리글/바닥 글에 대한 확실한 액세스가 필요했습니다. 감사! –

+0

"실제 대리인"에게 전달할지 여부를 결정하기위한 if ([self.delegate respondstoSelector :])를 잊지 마세요 –

관련 문제