요약 : 나는 내 창 "기본"보기의 하위보기로 UITableView
을 사용하려고합니다. 그것은 나타납니다,하지만 난 창을 스크롤 할 때 다음과 같은 오류 메시지가 얻을 : 내 응용 프로그램 위임에 의해로드 된 NIB 파일을 해당과 내가 ViewController
의 서브 클래스가NIB에서 하위보기로 UITableView와 관련된 문제가 발생했습니다.
2010-11-20 17:17:51.958 xwtf[6997:207] -[NSCFString tableView:cellForRowAtIndexPath:]: unrecognized selector sent to instance 0x5f46550
합니다. 그것은 전형적인 새 프로젝트 템플릿입니다. 해당 NIB 파일에서 하위보기로 UITableView
을 추가합니다. Interface Builder에서는 전체 창을 차지하도록 크기를 조정합니다 (즉, 상위 뷰와 완전히 겹치게).
이제 데이터 원본 및 대리인을 지정해야합니다. 내가 지금처럼 DumbTableHelper
라는 클래스를 만듭니다
@interface DumbTableHelper : NSObject<UITableViewDelegate, UITableViewDataSource> {
}
그래서, 그것은 UIViewController
의 서브 클래스 아니지만, 나는이 간단한 유지하기 위해 노력하고있어 - 내가 필요로하는 모든이를 호출 할 수있는 위임 및 데이터 소스 , 권리? 이외에도 dealloc
에서 그하는 .m 파일에 내 방법은 다음과 같습니다
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section {
return 10;
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"DumbTableCell";
UITableViewCell *cell = [tableView
dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier]
autorelease];
}
return cell;
}
당신이, 심지어 어떤 셀을 구성 아니에요 볼 수 있듯이, 10 열만 지정하면 스크롤을 강제 실행하기에 충분합니다. 어쨌든 Interface Builder에서 라이브러리의 객체를 내 NIB로 드래그합니다. 그런 다음 클래스 이름을 DumbTableHelper
으로 변경하고 데이터 소스로 지정하고 이미 UITableView
의 델리게이트로 지정합니다. 실행하면 표가 나타납니다. 나는 테이블 아래로 스크롤 할 때 내가 얻을 :
010-11-20 18:19:54.673 xwtf[6997:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFString tableView:cellForRowAtIndexPath:]: unrecognized selector sent to instance 0x5f46550'
*** Call stack at first throw:
(
0 CoreFoundation 0x0259eb99 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x0239340e objc_exception_throw + 47
2 CoreFoundation 0x025a06ab -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3 CoreFoundation 0x025102b6 ___forwarding___ + 966
4 CoreFoundation 0x0250fe72 _CF_forwarding_prep_0 + 50
5 UIKit 0x00321d6f -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 619
6 UIKit 0x00317e02 -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:] + 75
7 UIKit 0x0032c69f -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 1348
8 UIKit 0x003247ec -[UITableView layoutSubviews] + 242
9 QuartzCore 0x0455c481 -[CALayer layoutSublayers] + 177
10 QuartzCore 0x0455c1b1 CALayerLayoutIfNeeded + 220
11 QuartzCore 0x045552e0 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 302
12 QuartzCore 0x04555040 _ZN2CA11Transaction6commitEv + 292
13 QuartzCore 0x04585ebb _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 99
14 CoreFoundation 0x0257ff4b __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 27
15 CoreFoundation 0x02514b27 __CFRunLoopDoObservers + 295
16 CoreFoundation 0x024ddce7 __CFRunLoopRun + 1575
17 CoreFoundation 0x024dd350 CFRunLoopRunSpecific + 208
18 CoreFoundation 0x024dd271 CFRunLoopRunInMode + 97
19 GraphicsServices 0x02d5d00c GSEventRunModal + 217
20 GraphicsServices 0x02d5d0d1 GSEventRun + 115
21 UIKit 0x002beaf2 UIApplicationMain + 1160
22 xwtf 0x00001af4 main + 102
23 xwtf 0x00001a85 start + 53
)
그래서 그것은 .. 문자열에 tableView:cellForRowAtIndexPath:
를 호출하는거야? 누구든지 아이디어가 있습니까?
이것이 바보 같은 질문 인 경우 유감스럽게 생각합니다. 지금까지 모든 테이블보기는 프로그래밍 방식으로 UITableViewController
인스턴스로 생성되었지만 지금은 서브 뷰로 UITableView
을 추가해야합니다. 전체 화면을. 나는 테이블 뷰와 시작하는 iPhone 개발에 대한 Apple 가이드를 읽었습니다. 나는 아무것도 놓치지 않으려 고했지만 아무 소용이 없는지 확인했습니다.
감사합니다!
이 버그가 생길 때와 같은 문제가 있다고 가정하고 있습니다. '- [CALayer tableView : cellForRowAtIndexPath :] : 인식 할 수없는 셀렉터가 인스턴스 0x14563c90으로 전송되었습니다.'즉, 'NSCFString'보다는 'CALayer' 전에도 NSCString이이 같은 문제로 떠올랐다는 것을 맹세 할 수 있습니다.) .. 'CALayer'가 있다면 호크. – abbood