什么应该传递到:(NSString *)文本

时间:2010-09-13 10:54:37

标签: iphone objective-c

感觉有点困惑。我试图将NSString作为参数传递给此方法

- (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'

3 个答案:

答案 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的计算是错误的。 正确计算你的指数。