以编程方式在方法中移动控件警告“找不到方法”和“控件可能无法响应”

时间:2011-05-31 02:09:06

标签: objective-c methods uitextfield uilabel uicontrol

我有一个UISegmentedView,用于向用户显示他们可以在我的程序中执行的两个计算中的一个选项。如果分段控件是单向的,它应该显示4个文本框及其标签,如果另一个只有3个(并且计算也会改变)。

一切正常,我的问题是移动控件(我想隐藏你不需要的控件,以及移动屏幕上的控件使其看起来不错)

我想把它放在一个方法中,然后传递UIControl来移动它。例如,在我的.h

-(void) moveControlUp:(UIControl*)controlToMove;

然后,在我的.m

- (void)moveControlUp:(UIControl*)controlToMove
{
    controlToMove.frame = CGRectMake(controlToMove.frame.origin.x, controlToMove.frame.origin.y - 39, controlToMove.frame.size.width, controlToMove.frame.size.height); 
}

然后当我真的想要移动控件时(labelPointsHeader是UILabel,textPointsName是一个文本框):

[labelPointsHeader moveControlUp];
[textPointsName moveControlUp];

这不起作用,我得到两个错误。 “UILabel可能无法响应'-moveControlUp'”并且找不到“方法'-moveControlUp'(返回类型默认为id)。当我点击它时崩溃,说明'无法识别的选择器被发送到实例'。

1 个答案:

答案 0 :(得分:0)

您在哪个班级中定义了这些方法? (似乎不是一个类别)

假设您在SomeClass中定义了它们,那么您需要这样做:

[someInstanceOfSomeClass moveControlUp:labelPointsHeader];

现在你在第一种情况下向UILabel发送消息,但是UILabel没有这种方法。该方法适用于您定义的任何类别。