Перемещение элементов управления программным способом в методе предупреждает «метод не найден» и «элемент управления может не отвечать» - PullRequest
1 голос
/ 31 мая 2011

У меня есть 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'" и "Method '-moveControlUp' не найден (тип возвращаемого значения по умолчанию равен id). Я аварийно завершаю работу, когда нажимаю это, утверждая, что" нераспознанный селектор отправлен в экземпляр ".

1 Ответ

0 голосов
/ 31 мая 2011

В каком классе вы определили эти методы? (не относится к категории)

Допустим, вы определили их в SomeClass, тогда вам нужно сделать это:

[someInstanceOfSomeClass moveControlUp: labelPointsHeader];

Прямо сейчас вы отправляете сообщение UILabel в первом случае, но UILabel не имеет этого метода. Метод находится в том классе, в котором вы его определили.

...