我有一个 UIButtons 的 IBOutletCollection:
@property (nonatomic, retain) IBOutletCollection(UIButton) NSMutableArray *Buttons;
通过 ibaction,我将在着陆事件后永久更改突出显示的状态。
这个问题与此非常相似: IBOutletCollection of UIButtons - changed selected state of buttons
...但是使用 for 循环按钮不会改变。
我还从这里尝试了 perfomselector 方法:保持 iPhone UIButton 突出显示
但它不起作用。
现在我的代码:
-(IBAction)toggleButtons:(id)sender
{
NSUInteger Index = [button tag];
[[Buttons objectAtIndex:Index] setHighlighted:YES];
}
如果我将第四行更改为:
[[Buttons objectAtIndex:3] setHighlighted:YES];
它适用于我集合中的第四个元素......但不适用于索引变量......
问候,菲尔
更新
选择视图控制器.h
#import <UIKit/UIKit.h>
@interface SelectionViewController : UIViewController
@property (nonatomic, retain) IBOutletCollection(UIButton) NSMutableArray *Buttons;
- (IBAction)toggleButtons:(id)sender;
@end
选择视图控制器.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,则状态将突出显示。我正在使用“触地”事件......我想在我触碰按钮后,它会恢复到原来的状态。哪个事件是正确的?