2010-05-07 2 views
1

UITableView를 사용하여 샘플 응용 프로그램을 설치했습니다. 처음에 나는 <UITableViewDelegate><UITableViewDataSource>에 내 컨트롤러를 준수하여 이런 짓을, IB에있는 tableView를 추가하고 파일 소유자에 "데이터 소스"& "위임"을 연결. 그것은 모두 잘 작동합니다. 내가 시도 된 어떤UITableView 독립 실행 형 대리자 개체를 설정 하시겠습니까?

대리자에 대한 내 자신의 클래스를 만드는 것입니다. 새 클래스를 만들고 <UITableViewDelegate><UITableViewDataSource>을 추가했지만 tableView> dataSource/delegate에 연결할 수 없다는 것을 알게되었습니다. 이것을 해결하기 위해 IB에 "Object"(NSObject)를 추가하고 그것을 새로운 클래스로 설정했습니다. 그런 다음 dataSource를 연결하고 콘센트를이 객체에 위임합니다. 일종의 작품, 애플 리케이션을 실행하고 tableView 표시하지만 테이블을 시도하고 스크롤하면 애플 리케이션이 충돌합니다. 내가 올바른 방향으로 가고 있는지 물어봐도 될까요?

게리

+0

흠 나는 내 문제가 생각 난 그냥 IB에 NSObject의 추가 및 내 수업은 점점 릴리스를 할당하기 때문이다. 내 클래스를 인스턴스 변수로 뷰 컨트롤러에 추가하고 @property (retain)/synthesize 할 수 있습니까? – fuzzygoat

+0

충돌 로그를 게시 할 수 있습니까? 어쩌면 구현되지 않은 필수 메소드 또는 유효하지 않은 리턴 값이있을 수 있습니다. –

+0

IB가 내 대리인/데이터 소스 개체를 공개하기 때문에 충돌이 발생합니다. Xcode를 통해이를 유지하는 방법을 찾아야합니다. – fuzzygoat

답변

1

당신은 nib 파일에 클래스의 인스턴스를 얻기 위해 정확히 옳은 일을하고 있습니다. NSTableView 데이터 소스에 대해 항상이 메서드를 사용합니다. 문제가 입니다. 펜촉에있는 개체에 대해 데이터 소스/대리인 ivars를 올바르게 초기화하지 않았습니다. 예를 들어, 일부 초기화 메소드에서 alloca를 NSArray로 사용하는 경우 init 메소드가 호출되지 않을 수 있습니다. 이것을 확인하기 위해 몇 가지 코드를 게시해야합니다.

어쨌든, 당신의 새로운 클래스로 awakeFromNib라는 메소드를 생성하고 있다는 점에서 초기화를 넣어보십시오.

관련 문제