0

UIButtons の IBOutletCollection があります。

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

iactionを使用すると、タッチダウンイベント後に強調表示された状態を永続的に変更できます。

この問題は 、UIButtons の IBOutletCollection - ボタンの選択状態の変更と非常によく似ています。

...しかし、forループではボタンは変わりません。

ここからperfomselectorメソッドも試しました:Keep iPhone UIButton Highlighted

しかし、うまくいきません。

今私のコード:

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

4行目をこれに変更すると:

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

コレクションの4番目の要素で機能します...しかし、インデックス変数では機能しません....

よろしく、フィル

アップデート

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 に変更すると、状態が強調表示されます。「タッチダウン」イベントを使用しています...タッチアップすると、ボタンが古い状態になると思います。どのイベントが正しいですか?

4

1 に答える 1