나는 사용자 정의 된 UIView, MyView를 가지고 있는데,이 테이블 뷰에는 tv1과 tv2가 프로그래밍 방식으로 추가되어 있습니다.ViewController는 사용자 정의보기의 테이블 뷰의 위임자로
loadView에서 MyView의 인스턴스를 만드는 MyController 사용자 정의 UIViewController가 있습니다.
내 목표는 다음과 같습니다. myView는 데이터 모델에 접촉하지 않고 정적이기 때문에 myView.tv1에 대한 데이터 소스 및 위임자 여야합니다.
myController는 myView.tv2의 위임이어야합니다. 그 내용은 데이터 소스에 따라 달라지기 때문입니다.
@interface MyController : UIViewController <UITableViewDelegate, UITableViewDataSource>
@interface MyView : UIView <UITableViewDelegate, UITableViewDataSource>
를 각각 필요한 대리자 메서드에 추가 :
나는 각 헤더에 다음을 추가했습니다.
MYVIEW의 init에서, 그 테이블보기를 추가, 자기에 대한 첫 번째의 위임 설정 :
tv1 = [[UITableView alloc] initWithFrame:frame1 style:UITableViewStyleGrouped];
tv1.delegate = self;
tv1.datasource = self;
tv2 = [[UITableView alloc] initWithFrame:frame2 style:UITableViewStyleGrouped];
을 그리고 내 컨트롤러에서 나는 두 번째의 tableview 연결할 :
- (void)loadView{
self.view = [[MyView alloc] initWithFrame:myFrame];
[(MyView *)self.view tv2].delegate = self;
[(MyView *)self.view tv2].dataSource = self;
}
을 이걸 실행하면 런타임 오류가 완전히 엉망이됩니다. 때로는 페이징 제어에 대해 불평하고, 다른 경우에는 NSCFArray를, 다른 경우에는 텍스트를 전혀 쓰지 않습니다. 항상 충돌합니다.
위임자가 아니라 문제를 일으키는 데이터 소스를 설정하고 있다고 판단했습니다. laodView에서 데이터 소스 라인을 주석 처리하면 괜찮습니다 (물론 내용은 없음).
매번 다른 런타임 오류가 발생할 수 있으며 어디에서 잘못 될 수 있습니까?
일반적으로 (내 경험상) 다양한 충돌 오류 메시지를받는 것은 메모리와 관련이 있습니다. 테이블 뷰 중 하나의 구현을 주석 처리하고 한 번에 하나씩 작동 시키려고 했습니까? 어떤 tableview (또는 어느 쪽)가 문제인지를 좁힐 수 있다면 문제를 파악하는 데 도움이 될 것입니다. – WendiKidd
@WendiKidd의 설명을 보완하려면 정적 분석기를 실행하면 도움이되는지 확인하십시오. – Danra
고마워요 - "[ numberOfSectionsInTableView :] : 인식 할 수없는 셀렉터가 보냈습니다"라는 메시지가 나타납니다. 공란은 __NSCFType, NCSFArray 등입니다. ARC를 사용하기 때문에 어디에서 시작해야할지 모르겠습니다. –