И благодарю вас за внимание. Я пытаюсь добиться небольшого эффекта анимации в моем простом приложении, используя на этот раз объект UIPickerView.Lazy UIPickerView - (он не будет перемещаться дважды)
В общем случае, когда происходит определенное событие, я хочу, чтобы мой выборщик анимировал себя, выбрав свою последнюю строку (с анимацией, конечно) и сразу после (без какого-либо дальнейшего взаимодействия с пользователем) свою первую строку (с анимацией, конечно). Это, чтобы дать «приложение получило сумасшедший» эффект, который, как предполагается, действительно действительно остроумный, я думаю.
Поэтому мой код был:
[myPicker selectRow:[myPicker numberOfRowsInComponent:0]-1 inComponent:0 animated:YES];
[myPicker selectRow: 0 inComponent:0 animated:YES];
И что я получил то, что сборщик будет выполнять только вторую команду независимо от того, строки, указанной в нем. Кажется, он игнорирует первый.
Я думал, что это может быть для некоторой «умной» функции компилятора, которая отмечает, что две следующие инструкции выполняют присвоение одной и той же переменной, поэтому лучше игнорировать первый (не учитывая фактор «ANIMATED»). Я не знаю, было ли это так, но я попытался переместить эти две команды в двух операциях if, основанных на значении некоторого параметра, пытаясь обмануть компилятор (который во время компиляции не может знать значение этих параметров, поэтому он не должен выполнять такую оптимизацию). Это не сработало, потому что я полностью не слежу или потому, что компилятор гораздо умнее меня. я даже думал, что это может быть проблемой задержек и правильной последовательности событий поэтому я попытался переписать код, как следовать
-(void) setPickerRowToLastRow;
{
[myPicker selectRow:[myPicker numberOfRowsInComponent:0]-1 inComponent:0 animated:YES];
}
-(void) setPickerRowToFirstRow;
{
[myPicker selectRow:0 inComponent:0 animated:YES];
}
.....
[self performSelector: @selector(setPickerRowToLastRow)
withObject: nil
afterDelay: 1];
[self performSelector: @selector(setPickerRowToFirstRow)
withObject: nil
afterDelay: 1];
И это не сработало: сборщик-прежнему выполняет только второе действие, и это будет двигаться только один раз.
А теперь вопрос (ы):
Почему сборщика движение только один раз?
Как я могу достичь своей цели (даже если это может быть немного тривиально)?
Я просто пытался и делал, как вы сказали, это работает (хорошо .. Я не так далек от решения). Кажется, что он работает с любыми парами параметров задержки, где вторая выше первой. Ваш ответ решил мою проблему, спасибо вам большое. – user236739