Как обнаружить нажатие кнопки - предоставлен логический код ошибки - PullRequest
1 голос
/ 15 февраля 2012

То, что я хочу сделать, это когда я нажимаю кнопку, когда она должна подсвечиваться (я загружаю изображение, чтобы показать выделенный эффект), и когда я нажимаю кнопку еще раз (во второй раз), она должна удалять выделеннуюизображение и добавить нормальное изображение.он также должен добавлять и удалять элементы в Mutable Array.

Но что происходит, так это то, что, когда я нажимаю (один или несколько раз), он только добавляет изображения, но не удаляет их.Справка

код Я добавляю кнопку;Нижеследующие 2 строки размещены в методе viewdidload

UIButton *but= [UIButton buttonWithType:UIButtonTypeRoundedRect];
    // then i set the size etc, and do the following

        [but addTarget:self action:@selector(butclick:) forControlEvents:UIControlEventTouchUpInside];

    -(void)butclick:(id)sender{

        if([sender isSelected]==NO) {
            [sender setBackgroundImage:[UIImage imageNamed:@"highlighted.png"] forState:UIControlStateNormal];
            [sender setSelected:YES];

            [self.mutArry addObject:[sender titleForState:UIControlStateSelected]];

        } else {
            [sender setBackgroundImage:[UIImage imageNamed:@"nothighlighter.png"] forState:UIControlStateNormal];
            [sender setSelected:NO];
            [self.mutArry removeObject:[sender titleForState:UIControlStateSelected]];

        }

}

Ответы [ 2 ]

0 голосов
/ 15 февраля 2012

Определить и синтезировать следующее свойство в этом классе

BOOL selected;

в viewDidLoad, установлено значение false

self.selected = NO;

Теперь сделайте следующее:

-(void)butclick:(id)sender{

    if(!self.selected) {
        [sender setBackgroundImage:[UIImage imageNamed:@"highlighted.png"] forState:UIControlStateNormal];
        self.selected =  YES;

        [self.mutArry addObject:[sender titleForState:UIControlStateSelected]];

    } else {
        [sender setBackgroundImage:[UIImage imageNamed:@"nothighlighter.png"] forState:UIControlStateNormal];
        self.selected = NO;
        [self.mutArry removeObject:[sender titleForState:UIControlStateSelected]];

    }

}

0 голосов
/ 15 февраля 2012

Вы можете захотеть использовать BOOL (например, флаг), чтобы использовать его вместо идеи выделения.

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

    if (flag)
    {
    //add your object and set to highlight
       flag = NO;
    }else
    {
       flag = yes;
       //remove object and set to not highlighted
    }

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

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