我正在通过xcode和Objective c构建一个iphone应用程序。建立ios5.0分钟目标。 我创建了一个自定义的uitablecell,我在视图控制器的表中加载它没有问题。这个单元格包含一个按钮。当用户在任何单元格内点击此按钮时,我希望它在视图控制器中调用相同的功能。我过去这样做的方法是通过使自定义单元格的文件所有者成为有问题的视图控制器,然后简单地控制将按钮拖动到视图控制器中并将ibaction函数放在那里。总是没有问题。直到现在。
- [__ NSCFString loadMerchant:]:无法识别的选择器发送到实例0x8689e50 2012-05-24 09:56:14.630 [3217:16103] * 终止 应用程序由于未捕获的异常'NSInvalidArgumentException',原因: ' - [__ NSCFString loadMerchant:]:发送到实例的无法识别的选择器 0x8689e50'
这是我得到的错误。我确保该函数不会意外地链接到错误的按钮,该函数也不是在cell.m中错误地以及我能想到的任何其他简单错误。
有谁知道正确的方法来完成我想要做的事情?
编辑:自定义单元格
@interface TimelineCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UIButton *nameButton;
@end
@implementation TimelineCell
@synthesize nameButton;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
}
return self; }
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state }
@end
下面是viewcontroller
- (IBAction)loadMerchant:(id)sender;
- (IBAction)loadMerchant:(id)sender { }
就是这样。按下按钮时出现崩溃
编辑:删除nib文件中的链接,只是将动作添加到按钮似乎可以解决问题但是id仍然可以知道它的原因,如果有人可以阐明那将是值得赞赏的
在cellForRowAtIndexPath中制作
UIButton *b = (UIButton*)[cell viewWithTag:1];
[b addTarget:self action:@selector(loadMerchant:) forControlEvents:UIControlEventTouchUpInside];
答案 0 :(得分:0)
我最终做的是在nib文件中标记按钮,然后在代码中通过cellForRowAtIndexPath中设置的单元格中的代码添加目标。
UIButton *b = (UIButton*)[cell viewWithTag:1];
[b addTarget:self action:@selector(loadMerchant:) forControlEvents:UIControlEventTouchUpInside];
虽然这解决了这个问题,但我仍然不确定为什么通过IB的链接首先失败了。