2010-07-24 18 views
3

我創建了一個自定義的UITableViewCell的UIButton當抽頭

添加一個按鈕到其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"); 

} 
+0

不行不行。仍然崩潰。我一定要修改h文件和m文件,這個單元格也是編程的,所以它不是一個真正的IBAction上下文... – theprojectabot 2010-07-24 23:30:37

+0

我更新了我的答案。你應該把選擇器放在適當的類中。否則,您需要在選擇器中指定實例。 – 2010-07-24 23:48:32