0

これは私の例です:

UITableView *cell = [[MyCustomClass alloc] init];

次のようなメソッドを持つように、クラス「MyCustomClass」を変更できるようにする方法はありますか?

-(NSObject*)newMethod:(int)intNumber{
 classVariable = someClass depending on intNumber
 UITableView *cell [[<<<classVariable>>> alloc] init];
 return cell;
}

このメソッドが必要なので、正しいカスタム セルを作成し、次の実装でグローバル メソッドとして使用します。これは、スタック オーバーフローの他の質問で見つけたコードです (xibs からカスタム セルをロードするために使用されます)。 ):

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:stringIdentifier];

if (cell == nil) {
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:nibName owner:self options:nil];
    for (id currentObject in nib) {
        if ([currentObject isKindOfClass:[UITableViewCell class]]) {
            cell = (MyClassCell*) currentObject;
            break;
        }
    }
    cell = (MyClassCell *)[nib objectAtIndex:0];
}

私の目標は、上記のコードが必要とするすべての情報を送信するメソッドを持つことです。これは、tableViw、stringidentifier、nibName、および MyClassCell <-これが全体の問題です。

4

2 に答える 2

0

Class次を使用してクラスの を取得できますclass

Class myclass = [MYClass class];

myclass変数として渡すことができるようになり、Class必要な場所で使用できます。

id myinstance = [[myclass alloc] init];
于 2012-08-06T17:26:46.300 に答える
0

クラス名またはクラスを NSArray に配置して、インデックスを使用できます。

NSArray *classes = [NSArray arrayWithObjects:[ClassOne class], [ClassTwo class], [C

assThree クラス]、Nil];

id instance = [[(Class)[classes objectAtIndex:anIndex] alloc] init];

実行時にクラス情報を動的に構築/使用したい場合は、NSClassFromString() 関数を使用できます。

id anObject = [[NSClassFromString(@"FooBar") alloc] init];
于 2012-08-06T17:29:43.570 に答える