2012-05-07 2 views
0

다른 (Table) ViewController에서 TableView를 Scrollview로 구현하려고합니다. 저는 문자 그대로 몇 시간 동안 노력 중이며 문제를 파악할 수 없습니다. 내가 오류는 다음과 같습니다다른 ControllerClass에서 Subview로 UITableView 구현

- [UISectionRowData numberOfSectionsInTableView :] : 47 : 18.966 Test2를 [12212 : F803] 응용 프로그램을 종료 * 인해 인식 할 수없는 선택기 예를 0x687fdb0 2012-05-07 (16)로 전송 캐치되지 않는 예외 'NSInvalidArgumentException', 이유 : '- [UISectionRowData numberOfSectionsInTableView :] : 인식 할 수없는 선택기 예를 0x687fdb0로 전송'(

이 내가합니다 (있는 viewDidLoad로 구현 함께 일하고 있어요 코드 세그먼트입니다) 메소드) :

DateSubviewController *dateSubviewController = [[DateSubviewController alloc] init]; 
//This is the tableViewController which handles the code from the tableView I want to implement. 

NSArray *views = [NSArray arrayWithObjects: [dateSubviewController view], nil]; 

self.scrollView.delegate = self; 
self.pageControlBeingUsed = YES; 

for (int i = 0; i < views.count; i++) { 
    CGRect frame; 
    frame.origin.x = self.scrollView.frame.size.width * i; 
    frame.origin.y = 0; 
    frame.size = self.scrollView.frame.size; 

    UITableView *subview = [views objectAtIndex:i]; 
    [self.scrollView addSubview:subview]; 

    subview = nil; 
} 

self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * views.count, self.scrollView.frame.size.height); 

scrollview가 자체적으로 작동합니다 (다른 색상의 프레임으로 테스트 됨).

[dateSubviewController view]는 tableView가 작동하는 데 필요한 메소드를 호출하지 않는 것 같습니다. 보기 콘센트는 tableView에 연결되지만 스토리 보드에서는 회색으로 표시됩니다. 잘못된 뷰를 가리킬 수도 있다고 생각하여 이미 tableView를 삭제하고 다시 연결하려고했습니다. 이것은 아무런 효과가 없었다. 이 충돌은 전체 viewDidLoad() 메서드가 완료된 직후에 나타납니다.

는 I 어레이에 직접 디버깅 0 요소를 포함 보기를있는 tableView 액세스 할 (dateTable가있는 tableView이다 I 구현하려고)

NSArray *views = [NSArray arrayWithObjects: [dateSubviewController dateTable], nil]; 

를 사용하려고하는 경우. TableView 대리자 메서드는 호출되지 않습니다. 그러나 충돌하지 않습니다.

더 이상 무엇을 해야할지 모르겠습니다. 지금 약 6 시간 동안이 문제를 해결하기 위해 노력하고 있습니다. 여러 번 디버깅을하고 인터넷 조사를했지만 아무것도 찾지 못했습니다. 시간 내 줘서 고마워!

답변

3

작업 시간이 지나면 이제는 자동 복구 풀에 문제가 있다는 것을 알아 냈습니다. 나는 의 ViewController ...

DateSubviewController *dateSubviewController = [[DateSubviewController alloc] init]; 

를 초기화하면 ... 그것은 지역 변수이고 의 viewDidLoad() 방법은 마무리로 곧 출시되었다. instancevariable로 사용해야했습니다! 나는 이것이 미래의 독자들에게도 오류를 수정하기를 희망한다!당신의 ViewController를 초기화 할 클래스의 headerfile에서

: 귀하의 답변에 대한

self.dateSubviewController = [[DateSubviewController alloc] init]; 
+2

행복한 문제가 해결되었습니다 :-) –

0

오류에 따르면 tableView의 dataSource가 tableView에 필요한 메서드에 응답하지 않는다는 것을 분명히해야합니다. 이 데이터 소스 (tableView : numberOfRowsInSection :)를 구현하는 객체가 이미 있어야한다고 생각하기 때문에이 객체에 tableView의 dataSource 속성을 설정하지 않은 것일 수 있습니다. 코드 또는 Xibs를 확인하고 tableView의 dataSource 링크를 수정하십시오.

먼저 수행하십시오.

이후에는 다른 문제가있을 수 있습니다. 당신은 볼 수. 그러나 먼저이를 수정하고 오류를 읽고 이해하는 방법을 배우십시오. "인스턴스", "선택자", "예외"와 같이 이해할 수없는 단어에 자신을 문서화하십시오. 성공적인 디버깅을 위해서는 오류를 이해하는 것이 중요합니다.

+0

감사합니다,하지만 난 그 모든했다 :

@property (strong, nonatomic) DateSubviewController * dateSubviewController; 

그런 다음이 방법으로 그것을 초기화. 내가 implementet tableView 메서드 및 tableView 올바르게 스토리 보드에 연결되어 있습니다. 저는 IT 학생이고 인스턴스, 선택자 및 예외에 대해 알고 있습니다. 나는이 오류를 수정하기 위해 내가 생각할 수있는 모든 것을했지만, 나는 그것을 이해할 수 없다. –

관련 문제