Не удается скрыть UIButton - PullRequest
0 голосов
/ 19 марта 2010

У меня есть следующий код:

visitSite.hidden = YES;

По какой-то причине, когда я нажимаю кнопку UIB и вызываю этот фрагмент кода, кнопка visitSite не скрывается.

Кодв этом блоке:

-(IBAction)welcomeButtonPressed:(id)sender {
  [UIButton beginAnimations:@"welcomeAnimation" context:NULL];
  [UIButton setAnimationDuration:1.5];
  [UIButton SetAnimationDidStopSelector:@selector(nowHideThisSiteButton:finished:context:)];
  [UIButton setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];
  ((UIView *)sender).hidden = YES;
  [UIButton commitAnimations];
}

и селектор останова ниже:

-(void)nowHideThisSiteButton:(NSString *)animationID finished:(BOOL *)finished context:(void *)context {
  visitSite.hidden = YES;
}

Я также пробовал [visitSite setHidden:YES];, и это тоже не удалось. ТАКЖЕ Я заметил, что setAnimationDidStopSelector вообще не вызывается.

Кроме того, visitSite (когда NSLogged) равен:

<UIButton: 0x1290f0; frame = (0 0; 320 460); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x1290f0>>

visitSite.hidden (когдаNSLogged) равно: NULL

Есть еще идеи?(

Ответы [ 5 ]

8 голосов
/ 22 марта 2010

В вашем коде есть несколько ошибок.

  1. Свойство hidden UIView НЕ анимируемо. Когда этот блок анимации запускается, ваша кнопка исчезнет, ​​но она не исчезнет и не оживит. Надлежащий способ исчезновения UIView состоит в том, чтобы анимировать его свойство alpha от 1.0 до 0.0 следующим образом:

    myView.alpha = 1.0;
    [UIView beginAnimations: @ "Fade" context: NULL];
    myView.alpha = 0.0;
    [UIView commitAnimations];

    Вот список анимируемых свойств UIView

  2. setAnimationDidStopSelector не вызывается, потому что вы не установили делегат анимации. Вы правильно указали didStopSelector, который сообщает классу UIView, какое сообщение отправлять после завершения анимации. Однако вы не указали , на что отправлять это сообщение. Блок анимации не имеет представления о вашем объекте. Просто добавьте эту строку в блок анимации:

    [UIView setAnimationDelegate: self];

    (Замените себя любым объектом, который вы хотите получить didStopSelector)

  3. Как уже говорили другие, ваша кнопка равна нулю, потому что она не была правильно подключена в Интерфейсном Разработчике. В вашем .h файле вы должны иметь @property (nonatomic, retain) IBOutlet UIButton * visitSite;. Затем в Интерфейсном Разработчике щелкните свой контроллер, переключитесь на экран «Соединения» и перетащите объект с открытым кружком на свою кнопку. Это должно сделать это. Для получения дополнительной информации см. Справочное руководство Interface Builder.

2 голосов
/ 21 марта 2010

вы можете попробовать [visitSite removeFromSuperview];

0 голосов
/ 19 марта 2010

Вы дважды проверили привязки в Интерфейсном Разработчике? Вы помните, чтобы подключить кнопку к контроллеру?

Попробуйте установить точку останова на visitSite.hidden = YES; и убедитесь, что visitSite не равно нулю или не настроено на что-то неожиданное.

0 голосов
/ 19 марта 2010

Ваше определение animationDidStopSelector неправильно определяет тип готового аргумента: как указатель на логическое значение (BOOL *), а не просто логическое значение (BOOL). Я считаю, что это ваша проблема.

0 голосов
/ 19 марта 2010

Может быть, вы написали:

visitWebsite.hidden = YES;

вместо:

visitSite.hidden = YES;

Как насчет того, чтобы установить ваши кнопки в альфа-0, это работает?

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