获取 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 数据?

如何在 UITableView 中获取选定的 indexPath.section 和 indexPath.row 值?

在 UiTableView reloadData 之后保留选定的部分/行

在 UITableView 中添加动画部分?

尝试移动 UITableView 行时崩溃

如何将 JSON 获取到 Swift 到 tableView 作为部分和行?