3

たとえば、ViewController.h には次のようなものがあります。

@property (weak, nonatomic) IBOutlet UIButton *buttonA;
....
@property (weak, nonatomic) IBOutlet UIButton *buttonZ;

私のViewController.mには、次のものがあります。

for (unichar ch = 'A'; ch <= 'Z'; ch++) {
    NSMutableString *nameOfButton = [[NSMutableString alloc] initWithString:@"button"];
    [nameOfButton appendString:[NSString stringWithCharacters:&ch length:1]];
    //Code equivalent to change "self.(nameOfButton).text = @"";"
}

すべてのボタンを繰り返し処理し、テキスト プロパティを変更しようとしています。基本的に、上記の for ループを次のようにする方法がわかりません。

self.buttonA.text = @"";
self.buttonB.text = @"";
...
self.buttonZ.text = @"";

実際のプロパティ名の代わりに NSString 'nameOfButton' を使用しているためです。

4

5 に答える 5

3

複数の UIButton IBOutlets の代わりに IBOutlet コレクションを作成し、アウトレット コレクション内のボタンをループすることができます。ビューとコードを接続するときは、開いたダイアログでアウトレット コレクションを選択します。(接続中)

例: IBOutlet コレクション ボタン リストを呼び出してループします。

for (UIButton *button in self.buttonList) {
    [button setTitle:@"text" forState:UIControlStateNormal];
}

PS: 状態には常にセット タイトルを使用することを忘れないでください。.text はボタンでは機能しません。

于 2013-08-13T11:44:29.670 に答える
1

KVC (キー値コーディング) を使用して、文字列を使用してプロパティを引き出すことができます。

UIButton *btn = (UIButton *)[self valueForKey@"buttonA"];
于 2013-08-13T11:19:00.183 に答える
1

これはあなたのために働くでしょう

for (unichar ch = 'A'; ch <= 'Z'; ch++) {
    NSMutableString *nameOfButton = [[NSMutableString alloc] initWithString:@"button"];
    [nameOfButton appendString:[NSString stringWithCharacters:&ch length:1]];
    //Code equivalent to change "self.(nameOfButton).text = @"";"
    NSLog(@"%@",nameOfButton);


    UIButton *btn = (UIButton *)[self valueForKey:nameOfButton];
    [btn setTitle:nameOfButton forState:UIControlStateNormal];
}

このコードは、このシリーズのすべてのボタンを作成して、タイトルをアウトレット名に変更します。そのログのコードは自明です

于 2013-08-13T11:33:51.443 に答える
0

ループ内で KVC (Key-Value Coding) を使用できます。

[self setValue:@"" forKeyPath:[NSString stringWithFormat:@"%@.text", nameOfButton]];
于 2013-08-13T11:19:53.650 に答える
-1

You can iterate through all the buttons in self.view if they are added to the viewcontroller's view with the following

for (UIButton *button in self.view.subviews) {
// your code here

}
于 2013-08-13T11:15:29.660 に答える