Передайте целочисленную переменную через анимацию. Метод Stop - PullRequest
0 голосов
/ 14 апреля 2011

Мне нужно передать переменную через последовательность анимации, но у меня возникли проблемы с выяснением, как ее добавить. Целочисленное значение yesNo не передается должным образом, когда я пытаюсь добавить его в мой метод animationDidStop:

- (void) animateStart:(NSInteger *)yesNo {

    // AT THIS NSLOG POINT THE VALUE OF yesNO VARIABLE CHECKS OK:
    NSLog(@"animateStart yesNo: %i",yesNo);

    [UIView beginAnimations:@"startMove" context:NULL];
    [UIView setAnimationDuration:2.0];
    [UIView setAnimationDelegate:self];

    // HERE IS WHERE I TRY TO PASS THE yesNO VARIABLE:
    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:yesNo:)];
    . . .

    [UIView commitAnimations];

}

// I TRY TO ADD THE yesNO VARIABLE HERE:

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context yesNo:(NSInteger *)yesNo {

    // BUT THE NSLOG SHOWS THE WRONG VALUE (ALWAYS int 2)
    NSLog(@"animationDidStop yesNo: %i",yesNo);

    [self nextMethod:(NSInteger *)yesNo];

}

Ответы [ 2 ]

1 голос
/ 14 апреля 2011

Попробуйте использовать:

- (void) animateStart:(NSInteger)yesNo

NSInteger - просто определение типа для int:

#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
#else
typedef int NSInteger;
#endif

поэтому указатель не нужен.

0 голосов
/ 14 апреля 2011

Извиняюсь за ответ на мой собственный вопрос, но в случае, если это пригодится кому-то еще, здесь идет ... Переменная animationID метода setAnimationDidStopSelector передает NSString animationID метода beginAnimations, что является совершенно произвольным значением. Таким образом, чтобы передать мой целочисленный параметр, я воспользовался этим открытым параметром и преобразовал свой целочисленный параметр в NSString и вернулся, используя приведенный ниже код:

- (void) animateStart:(NSInteger)yesNo {

    // cast the integer to a string:
    [UIView beginAnimations:[NSString stringWithFormat: @"%i",yesNo] context:NULL];
    [UIView setAnimationDuration:2.0];
    [UIView setAnimationDelegate:self];

    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:yesNo:)];
    . . .

    [UIView commitAnimations];

}

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
// cast the string back to an integer:
    [self nextMethod:(NSInteger)[animationID intValue]];

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...