获取 UITableView 部分和行之后......这段代码做了啥?
Posted
技术标签:
【中文标题】获取 UITableView 部分和行之后......这段代码做了啥?【英文标题】:After fetching UITableView Section and Row... what does this code do?获取 UITableView 部分和行之后......这段代码做了什么? 【发布时间】:2011-07-20 12:07:09 【问题描述】:谁能解释一下这段代码在得到 NSArray 后做了什么......
- (UIViewController *)sampleForIndexPath:(NSIndexPath *)indexPath
NSArray *samples = [samples_ objectAtIndex:indexPath.section];
Class clazz = [samples objectAtIndex:indexPath.row];
UIViewController *instance = [[clazz alloc] initWithNibName:nil bundle:nil];
return [instance autorelease];
我得到的是 NSArray of Section... 那么我们如何将行的值分配给一个类??
【问题讨论】:
【参考方案1】:这里的数组 samples 包含 Class 类型的对象。您可以直接使用类名或使用 Class 对象/变量来创建类的实例。例如,
/* One Way */
// Create an instance of MyViewController deirectly
UIViewController *vc = [[MyViewController alloc] init];
/* Another Way */
// The following line returns a class object
Class cls = NSClassFromString(@"MyViewController");
// The below is just for an example. This also returns a class object
Class cls = [MyViewController class];
// Create an instance of MyViewController from the class object
UIViewController *vc = [[cls alloc] init];
您的代码使用第二种方式从[samples objectAtIndex:indexPath.row]返回的类对象中分配视图控制器对象。
【讨论】:
【参考方案2】:获取数组后,它使用以下方法检索特定的Class
:
Class clazz = [samples objectAtIndex:indexPath.row];
然后它使用该类实例化一个UIViewController
对象,并返回该对象:
UIViewController *instance = [[clazz alloc] initWithNibName:nil bundle:nil];
return [instance autorelease];
【讨论】:
以上是关于获取 UITableView 部分和行之后......这段代码做了啥?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 UITableView 中获取选定的 indexPath.section 和 indexPath.row 值?