在 UItableview 单元格中创建的 UIButton 在点击时崩溃
Posted
技术标签:
【中文标题】在 UItableview 单元格中创建的 UIButton 在点击时崩溃【英文标题】:UIButton created in UItableview cell crashes when tapped 【发布时间】:2010-07-24 23:10:54 【问题描述】:我创建了一个自定义 UItableviewcell
在其 initWithStyle 区域中添加了一个按钮:
favoriteButton = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
favoriteButton.backgroundColor = [UIColor clearColor];
[favoriteButton setTitle:@"Play" forState:UIControlStateNormal];
[favoriteButton addTarget:self action:@selector(favoriteClick:) forControlEvents:UIControlEventTouchUpInside];
favoriteButton.center = self.center;
将其框架和布局设置为:
- (void)layoutSubviews
[super layoutSubviews];
CGRect contentRect = self.contentView.bounds;
CGFloat boundsX = contentRect.origin.x;
CGRect frame;
frame = CGRectMake(boundsX+200, 44, 40, 40);
favoriteButton.frame = frame;
然后在我的 tableviewcontroller.m 文件中,我使用该 tableviewcell 并让用户单击点击以转到该 tableviewcontroller.m 代码中的操作
-(void)favoriteClick:(id)sender// forEvent:(UIEvent*)event
NSLog(@"click");
但是,当我点击按钮时,我得到一个未处理的异常:
2010-07-24 16:06:02.197 Film Fest[10342:40b] -[ProgramGuideCell favoriteClick:]: unrecognized selector sent to instance 0x6e63ff0
2010-07-24 16:06:02.200 Film Fest[10342:40b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ProgramGuideCell favoriteClick:]: unrecognized selector sent to instance 0x6e63ff0'
*** Call stack at first throw:
(
0 CoreFoundation 0x02a56919 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x02ba45de objc_exception_throw + 47
2 CoreFoundation 0x02a5842b -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3 CoreFoundation 0x029c8116 ___forwarding___ + 966
4 CoreFoundation 0x029c7cd2 _CF_forwarding_prep_0 + 50
5 UIKit 0x00301e14 -[UIApplication sendAction:to:from:forEvent:] + 119
6 UIKit 0x0038b6c8 -[UIControl sendAction:to:forEvent:] + 67
7 UIKit 0x0038db4a -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
8 UIKit 0x0038c6f7 -[UIControl touchesEnded:withEvent:] + 458
9 UIKit 0x00579070 _UIGestureRecognizerUpdateObserver + 3687
10 CoreFoundation 0x02a37d1b __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 27
11 CoreFoundation 0x029cc987 __CFRunLoopDoObservers + 295
12 CoreFoundation 0x02995c17 __CFRunLoopRun + 1575
13 CoreFoundation 0x02995280 CFRunLoopRunSpecific + 208
14 CoreFoundation 0x029951a1 CFRunLoopRunInMode + 97
15 GraphicsServices 0x030b42c8 GSEventRunModal + 217
16 GraphicsServices 0x030b438d GSEventRun + 115
17 UIKit 0x0030fb58 UIApplicationMain + 1160
18 Film Fest 0x00002170 main + 102
19 Film Fest 0x00002101 start + 53
)
terminate called after throwing an instance of 'NSException'
我看不出我在这里做错了什么......
【问题讨论】:
【参考方案1】:尝试在您的选择器上返回IBAction
而不是void
,并将选择器放入ProgramGuideCell
而不是tableviewcontroller。
-(IBAction)favoriteClick:(id)sender// forEvent:(UIEvent*)event
NSLog(@"click");
【讨论】:
不,没有运气。仍然崩溃。我确保修改了 h 文件和 m 文件,单元格也是以编程方式制作的,因此它不是真正的 IBAction 上下文...... 我更新了我的答案。您应该将选择器放在正确的类中。否则,需要在选择器中指定实例。以上是关于在 UItableview 单元格中创建的 UIButton 在点击时崩溃的主要内容,如果未能解决你的问题,请参考以下文章