И заранее благодарю за внимание.Я пытаюсь добиться небольшого эффекта анимации в моем простом приложении, используя на этот раз объект UIPickerView.
По сути, когда происходит определенное событие, я хочу, чтобы мой просмотрщик анимации сам выбирал свою последнюю строку (с анимацией, конечно) и сразу после (без какого-либо дальнейшего взаимодействия с пользователем) его первой строки (с анимацией, конечно).Это, чтобы дать эффект «приложение стало сумасшедшим», который должен быть действительно остроумным, я думаю.
Поэтому мой код был:
[myPicker selectRow:[myPicker numberOfRowsInComponent:0]-1 inComponent:0 animated:YES];
[myPicker selectRow: 0 inComponent:0 animated:YES];
И что я получил, так это то, чтоСредство выбора выполнит только вторую инструкцию, независимо от указанной в ней строки.Кажется, он игнорирует первую.
Я думал, что это может быть для какой-то «умной» функции компилятора, которая отмечает, что две следующие инструкции выполняют присваивание одной и той же переменной, поэтому лучше игнорировать первую(без учета «анимированного» фактора).Я не знаю, так ли это, но я пытался переместить эти две инструкции в две инструкции 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];
И это не сработало: сборщик все еще выполняет только второе действие ибудет двигаться только один раз.
А теперь вопрос (ы):
Почему сборщик двигается только один раз?
Как мне достичь своей цели (даже если, возможно,немного тривиально)?