我有一个IBOutletCollection of UIButtons:
@property (nonatomic, retain) IBOutletCollection(UIButton) NSMutableArray *Buttons;使用ibaction,我将在单击事件之后永久地更改突出显示的状态。
这个问题非常类似:IBOutletCollection of UIButtons - changing selected state of buttons
..。但是使用for-循环,按钮不会改变。
我还尝试了从这里选择香水的方法:Keep iPhone UIButton Highlighted
但它不起作用。
现在我的代码:
-(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;
@endSelectionViewController.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];
}

Okey更新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,则会突出显示状态。我在用“触地”事件..。我想在我按下按钮后就会恢复原来的状态。哪个项目是对的?
发布于 2012-09-08 17:15:58
假设您的示例使用特定的整数,问题可能是标记属性没有为每个按钮正确设置。如果这些按钮是在接口生成器中创建的,则每个按钮的缺省标记值为0。要检查这一点,请单击该按钮,然后在“属性检查器”中向下滚动,查看在标记字段中输入的值
https://stackoverflow.com/questions/12332677
复制相似问题