UIB кнопка в качестве переключателя - PullRequest
1 голос
/ 20 декабря 2011

Я пытаюсь создать кнопку типа push-on-push-off с пользовательскими изображениями в Xcode4 для iOS.Код, который я использую:

- (IBAction)btnAll:(id)sender
{
    UIButton *button = (UIButton *)sender;
    button.selected = !button.selected;
}

На данный момент работает отлично.Но моя проблема в том, что, когда я включаю, я нажимаю на нее, потом она снова отрывается и, наконец, снова включается.Приложение работает, но это действительно ужасно.

Сначала я включил "выделенное" изображение.Поэтому, когда я выделяю кнопку, она включается, и это включается.Это отлично работает.Но когда я выключаю его снова, проблема та же, в обратном направлении.

Я пытался поставить этот код:

- (IBAction)btnAll:(id)sender
{
    UIButton *button = (UIButton *)sender;
    if(button.selected)
    {
        [button setImage[UIImage imageNamed@"off.png"] forState:UIControlStateHighlighted];
    }
    else
    {
        [button setImage[UIImage imageNamed@"on.png"] forState:UIControlStateHighlighted];
    }
    button.selected = !button.selected;
}

Но пока button.selected = !button.selected нетразница.Так что это не изменится.

Я также пытался запустить IBAction на »Touch Down«, но вы можете представить, как это будет разочаровывать.

У кого-нибудь есть решение дляэта проблема?Кто-нибудь тоже с этим боролся?

Привет, спасибо большое Джулиан

Ответы [ 4 ]

3 голосов
/ 20 декабря 2011

Не переключайте изображения вручную, просто установите изображение выбранного состояния в Интерфейсном Разработчике и поменяйте свойство selected при нажатии кнопки.

2 голосов
/ 20 декабря 2011

У меня была похожая проблема с этим раньше, кнопка работает немного странно при нажатии. Попробуйте этот код и дайте мне знать, если он работает

    UIButton *button = (UIButton *)sender;
    if(button.selected)
    {
        [button setImage:[UIImage imageNamed:@"off.png"] forState:UIControlStateHighlighted];
        [button setImage:[UIImage imageNamed:@"off.png"] forState:UIControlStateSelected];
        [button setImage:[UIImage imageNamed:@"off.png"] forState:UIControlStateHighlighted | UIControlStateSelected];
    }
    else
    {
        [button setImage:[UIImage imageNamed:@"on.png"] forState:UIControlStateHighlighted];
        [button setImage:[UIImage imageNamed:@"on.png"] forState:UIControlStateSelected];
        [button setImage:[UIImage imageNamed:@"on.png"] forState:UIControlStateHighlighted | UIControlStateSelected];
    }
    button.selected = !button.selected;

    If (button.selected) {
      [button setImage:[UIImage imageNamed:@"on.png"] forState:UIControlStateNormal];
    } else {
      [button setImage:[UIImage imageNamed:@"off.png"] forState:UIControlStateNormal];
    }

Когда вы нажимаете и удерживаете кнопку, состояние фактически выделяется и выбирается, поэтому вам нужно изображение как для выделения, так и для выбранного состояния.

0 голосов
/ 29 мая 2012

Создано две кнопки.

Разместите кнопки на одну над одной.

Можно установить изображения по умолчанию и выбранные изображения с помощью пользовательской кнопки в конструкторе дизайна.

-(void)firstButtonClicked {

firstButton.hidden = YES;
secondButton.hidden = NO;

}

-(void)secondButtonClicked {

firstButton.hidden = NO;
secondButton.hidden = YES;

}
0 голосов
/ 20 декабря 2011

Согласитесь с Джимом, ваш код нуждается в небольшой модификации, как показано ниже ...

[button setImage[UIImage imageNamed@"off.png"] forState:UIControlStateNormal];
[button setImage[UIImage imageNamed@"on.png"] forState:UIControlStateSelected];
...