0

这是我的例子:

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

有没有一种方法可以改变类“MyCustomClass”,比如有这样的方法:

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

我想要这个方法,所以我可以创建正确的自定义单元格,并在我的下一个实现中将它用作全局方法,这是我在 Stack Overflow 的其他问题中找到的代码(用于从 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需要 a 的地方使用它:

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

您可以将类名甚至类放在 NSArray 中并使用索引:

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

assThree class], Nil];

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

如果您希望在运行时动态构造/使用类信息,可以使用 NSClassFromString() 函数:

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