UITableViewCell
에는 2 UIButton
인스턴스가 있습니다. 두 버튼 모두 기본 이미지가 있습니다. "불량"버튼에만 비활성화 상태에 대한 이미지가 있습니다. 아무것도 더. 신비한 UIButton 충돌
IBOutlet
키워드 속성으로 선언 된 다음 .xib의 2 개 버튼과 클래스의 속성 사이
@property (nonatomic, readonly) IBOutlet UIButton* buttonCall;
@property (nonatomic, readonly) IBOutlet UIButton* buttonGPS;
연결이 만들어집니다. .xib는 다음을 수행로드
그래서:
MyCell* cell = (MyCell*)[tableView dequeueReusableCellWithIdentifier:cellID];
if (nil == cell)
{
NSArray* nibContents = [[NSBundle mainBundle] loadNibNamed:@"MyCell" owner:nil options:nil];
cell = [nibContents objectAtIndex:0];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
// gps button
[cell.buttonGPS setTitle:[NSString stringWithFormat:@"%d", indexPath.row] forState:UIControlStateNormal];
[cell.buttonGPS addTarget:self action:@selector(actionGPS:) forControlEvents:UIControlEventTouchUpInside];
if (...condition...)
{
cell.buttonCall.enabled = NO;
[cell.buttonCall removeTarget:self action:@selector(actionCall:) forControlEvents:UIControlEventTouchUpInside];
}
else
{
cell.buttonCall.enabled = YES;
[cell.buttonCall setTitle:[...TheTitleString...] forState:UIControlStateNormal];
[cell.buttonCall addTarget:self action:@selector(actionCall:) forControlEvents:UIControlEventTouchUpInside];
}
뷰 컨트롤러가 (UITableViewCell*)tableView:cellForRowAtIndexPath:
을 통해 성공적으로 배의 필요한 수를 간다 나타납니다
0 kill
...
[UIButton imageRectForContentRect:]
[UIButton(UIButtonInternal) _setupImageView]
[UIButton layoutSubviews]
...
start
나는 버튼의 이미지를 제거하고 스택과 충돌 시작 : 나는 버튼에 대한 몇 가지 식별자 레이블을 추가
0 kill
...
[UIButton layoutSubviews]
...
start
- 여전히 충돌.
"잘못된"버튼에 대한 XCode-InterfaceBuilder 연결이 제거되고 충돌이 중지되었습니다. 그러나 버튼은 작동하지 않습니다.
크래시의 원인을 알려주세요.
호출 스택은 다음과 같습니다
0 CoreFoundation 0x013d406e __exceptionPreprocess + 206
1 libobjc.A.dylib 0x019f0d0a objc_exception_throw + 44
2 CoreFoundation 0x013d5ced -[NSObject doesNotRecognizeSelector:] + 253
3 CoreFoundation 0x0133af00 ___forwarding___ + 432
4 CoreFoundation 0x0133ace2 _CF_forwarding_prep_0 + 50
5 UIKit 0x0086de3a -[UIButton imageRectForContentRect:] + 350
6 UIKit 0x0086ed5b -[UIButton(UIButtonInternal) _setupImageView] + 158
7 UIKit 0x0086e5f8 -[UIButton layoutSubviews] + 693
8 UIKit 0x0069f322 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 178
9 CoreFoundation 0x013d5e72 -[NSObject performSelector:withObject:] + 66
10 QuartzCore 0x0042092d -[CALayer layoutSublayers] + 266
11 QuartzCore 0x0042a827 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 231
12 QuartzCore 0x003b0fa7 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 377
13 QuartzCore 0x003b2ea6 _ZN2CA11Transaction6commitEv + 374
14 QuartzCore 0x003b2580 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 80
15 CoreFoundation 0x013a89ce __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30
16 CoreFoundation 0x0133f670 __CFRunLoopDoObservers + 384
17 CoreFoundation 0x0130b4f6 __CFRunLoopRun + 1174
18 CoreFoundation 0x0130adb4 CFRunLoopRunSpecific + 212
19 CoreFoundation 0x0130accb CFRunLoopRunInMode + 123
20 GraphicsServices 0x03258879 GSEventRunModal + 207
21 GraphicsServices 0x0325893e GSEventRun + 114
22 UIKit 0x00660a9b UIApplicationMain + 1175
23 MyApp 0x000023f9 main + 169
24 MyApp 0x00002345 start + 53
예외는 다음과 같습니다
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull length]: unrecognized selector sent to instance 0x146acd8'
info symbol 0x146acd8
__kCFNull in section LC_SEGMENT.__DATA.__data of /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation
두 번째 시나리오는 비슷합니다. 그러나 예외는 완전히 동일합니다.
0 CoreFoundation 0x013d406e __exceptionPreprocess + 206
1 libobjc.A.dylib 0x019f0d0a objc_exception_throw + 44
2 CoreFoundation 0x013d5ced -[NSObject doesNotRecognizeSelector:] + 253
3 CoreFoundation 0x0133af00 ___forwarding___ + 432
4 CoreFoundation 0x0133ace2 _CF_forwarding_prep_0 + 50
5 UIKit 0x0086e851 -[UIButton layoutSubviews] + 1294
6 UIKit 0x0069f322 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 178
7 CoreFoundation 0x013d5e72 -[NSObject performSelector:withObject:] + 66
8 QuartzCore 0x0042092d -[CALayer layoutSublayers] + 266
9 QuartzCore 0x0042a827 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 231
10 QuartzCore 0x003b0fa7 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 377
11 QuartzCore 0x003b2ea6 _ZN2CA11Transaction6commitEv + 374
12 QuartzCore 0x003b2580 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 80
13 CoreFoundation 0x013a89ce __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30
14 CoreFoundation 0x0133f670 __CFRunLoopDoObservers + 384
15 CoreFoundation 0x0130b4f6 __CFRunLoopRun + 1174
16 CoreFoundation 0x0130adb4 CFRunLoopRunSpecific + 212
17 CoreFoundation 0x0130accb CFRunLoopRunInMode + 123
18 GraphicsServices 0x03258879 GSEventRunModal + 207
19 GraphicsServices 0x0325893e GSEventRun + 114
20 UIKit 0x00660a9b UIApplicationMain + 1175
21 MyApp 0x000023f9 main + 169
22 MyApp 0x00002345 start + 53
충돌 정보를 볼 수 있습니까? –
다른 정보가 있습니까? 구체적인 것이 필요하면 그냥 물어보십시오. –
실제로 발생한 예외는 무엇입니까? –