IBOutletCollection UIButtons не будет выделен

У меня есть IBOutletCollection UIButtons:

@property (nonatomic, retain) IBOutletCollection(UIButton) NSMutableArray *Buttons;

с ibaction я бы навсегда изменил выделенное состояние после события приземления.

Эта проблема очень похожа на это: IBOutletCollection UIButtons - изменение выбранного состояния кнопок

... но с циклом for кнопки не меняются.

я также попробовал метод perfomselector отсюда: держите iPhone UIButton выделенным

но это не работает.

теперь мой код:

-(IBAction)toggleButtons:(id)sender
{
    NSUInteger Index = [button tag];
    [[Buttons objectAtIndex:Index] setHighlighted:YES];
}

если я изменю строку четыре на это:

    [[Buttons objectAtIndex:3] setHighlighted:YES];

это работает для четвертого элемента в моей коллекции... Но не с переменной индекса....

С уважением, Фил

Обновить

SelectionViewController.h

#import <UIKit/UIKit.h>

@interface SelectionViewController : UIViewController

@property (nonatomic, retain) IBOutletCollection(UIButton) NSMutableArray *Buttons;

- (IBAction)toggleButtons:(id)sender;

@end

SelectionViewController.m

#import "SelectionViewController.h"

@interface SelectionViewController ()

@end

@implementation SelectionViewController

@synthesize Buttons;


-(IBAction)toggleButtons:(id)sender
{
    UIButton *button = sender;
    NSUInteger Index = [button tag];
    [self performSelector:@selector(doHighlight:) withObject:sender afterDelay:0];

    [[Buttons objectAtIndex:Index] setHighlighted:YES];
}
- (void)doHighlight:(UIButton *)b {
    [b setHighlighted:YES];
}

Файл XIB

Окей Обновление 2:

Теперь я объявил свои кнопки как нормальный IBOutlet, и это не работает:

-(IBAction)toggleButtons:(id)sender
{
    UIButton *button = sender;

    [button setHighlighted:YES];
}

Но если изменить это на это:

-(IBAction)toggleButtons:(id)sender
{    
    [myOutletButton setHighlighted:YES]; //Normal Outlet 
}

оно работает....

Но почему это невозможно с отправителем?

С уважением!

Обновление 3

Это работает также:

for(id button in self.view.subviews)
{
    [button setHighlighted:YES];

}

Хорошо, если изменить время задержки в селекторе на 1, состояние будет подсвечено. Я использую событие "Touch Down"... я думаю, что после того, как я коснулся, кнопка получает свое старое состояние. Какое событие является правильным?

1 ответ

Решение

Учитывая, что ваш пример работает с определенным целым числом, проблема, вероятно, заключается в том, что свойство tag установлено неправильно для каждой из ваших кнопок. Если кнопки создаются в конструкторе интерфейсов, для каждой из них будет установлено значение тега по умолчанию, равное 0. Чтобы проверить это, нажмите кнопку, а затем в инспекторе атрибутов прокрутите вниз до пункта "Просмотр" и посмотрите, какое значение вводится в теге. поле

Другие вопросы по тегам