0

クラスを初期化し、同一の初期化パラメータを複数のインスタンスに渡す方法に頭を悩ませています。1 つのアウトレット (instance1) で動作させることができます。しかし、各インスタンスの変数を書き直さずに、インスタンス 2 でも動作させるにはどうすればよいでしょうか?

ViewController.h:

#import "CustomClass.h"

@interface MYViewController : UIViewController

@property (unsafe_unretained, nonatomic) IBOutlet CustomClass *instance1;
@property (unsafe_unretained, nonatomic) IBOutlet CustomClass *instance2;

@end

ViewController.m:

#import "CustomClass.h"

@implementation MYViewController;

@synthesize instance1, instance2;

- (void)viewDidLoad
{
    [super viewDidLoad];
    instance1.variable1 = option1;
    instance1.variable2 = 4.5;
    instance1.variable3 = instance1.value;
    [instance1 addTarget:self action:@selector(instance1DidChange) forControlEvents:UIControlEventValueChanged];
4

2 に答える 2

0

基本的に、インスタンスを NSSet または NSArray に追加し、それを反復処理するか、キー値コーディングを使用して値を設定します。これらのアウトレットが、たまたま同じ初期値を持つ独立したオブジェクトの集まりではなく、概念的に物事のグループである場合、IBOutlet の代わりに IBOutletCollection を使用して、最初からすべてを配列に保持することができます。

于 2012-05-11T23:16:43.650 に答える
0

いくつかの KVC を使用したループは、それを行う必要があります...

@implementation MYViewController;

@synthesize instance1, instance2;

- (void)viewDidLoad
{
    [super viewDidLoad];

    for (int i = 0; i =< 1; i++) {
        MyClass *newInstanceVariable = [[MyClass alloc] init];
        newInstanceVariable.variable1 = option1;
        newInstanceVariable.variable2 = 4.5;
        newInstanceVariable.variable3 = instance1.value;
        [newInstanceVariable addTarget:self action:@selector(instance1DidChange) forControlEvents:UIControlEventValueChanged];
        instanceVariableName = [NSString stringWithFormat:@"instance%i",i];
        [self valueForKey:instanceVariableName] = newInstanceVariable;
    }
}

あなたが探しているものにかなり近いはずです。

于 2012-05-11T23:19:29.313 に答える