- (void)setRightLabelText:(NSString *)text { rightLabel.text = text; }
我用来调用方法的代码
for(int index=0; index<5; index++)
{
NSNumber *num = [card.statsArray objectAtIndex:index];
StatView *statView = (StatView *)[self.frontView viewWithTag:10+index];
NSString *nameHolder = @"test";
[statView setRightLabelText:nameHolder];
}
我用来创建视图的代码:
for(int i=0; i<totalButtons; i++)
{
StatView *sv = [[StatView alloc] initWithYPos:ypos];
sv.tag = 100 + i;
[sv.overlayButton addTarget:self action:@selector(statTapped:)
forControlEvents:UIControlEventTouchUpInside];
sv.overlayButton.tag = 10 + i;
[self.frontView addSubview:sv];
ypos += 26;
}
这对我来说看起来很完美,但是当我在应用程序中进行此方法调用时,我遇到了崩溃。 错误消息: - [UIButton setRightLabelText:]:无法识别的选择器发送到实例0x5d116e0 2010-09-13 11:39:44.761 LeinsterRugby [1387:207] ***由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [UIButton setRightLabelText:]:无法识别的选择器发送到实例0x5d116e0'
答案 0 :(得分:0)
StatView *statView = (StatView *)[self.frontView viewWithTag:10+index];
会返回UIButton
而不是StatView
,因为该标记与您使用sv.overlayButton.tag = 10 + i;
指定的按钮匹配。
答案 1 :(得分:0)
看起来好像是将setRightLabelText
消息(选择器)发送到UIButton
的实例而不是您正在实现的类型的对象。
而不是:
[statView setRightLabelText:nameHolder];
你或许是指:
[self setRightLabelText:nameHolder];
答案 2 :(得分:0)
崩溃的可能原因是
StatView *statView = (StatView *)[self.frontView viewWithTag:10+index];
从(10 +索引)获取StatView的计算是错误的。 正确计算你的指数。