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];
}
Окей Обновление 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. Чтобы проверить это, нажмите кнопку, а затем в инспекторе атрибутов прокрутите вниз до пункта "Просмотр" и посмотрите, какое значение вводится в теге. поле