0
我有多个表视图显示不同的项目。每个单元格的细节视图应该具有相同的布局。我想为每个表的所有单元使用相同的详细视图,而不必为每个表实现不同的详细视图类,因为它几乎是相同的代码。我该怎么做呢?Xcode重用多表视图的详细视图
以下方法位于其中一个表视图中。这将显示详细视图在选择的小区:
-(void)tableView:(UITableView *)tv didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"didSelectRowAtIndexPath");
AppDelegate *delegate =
(AppDelegate *)[[UIApplication sharedApplication] delegate];
Detail *detail=
[[Detail alloc] initWithIndexPath:indexPath];
[delegate.navController pushViewController:detail animated:YES];
[tv deselectRowAtIndexPath:indexPath animated:YES];
}
以下是viewDidLoad方法中的详细视图类:
- (void)viewDidLoad
{
[super viewDidLoad];
AppDelegate *delegate =
(AppDelegate *)[[UIApplication sharedApplication] delegate];
PokemonInfo *thisPokemon = [delegate.allArray objectAtIndex:index.row];
self.title = thisPokemon.name;
nameView.text = thisPokemon.name;
typeView.text = thisPokemon.type;
attackView.text = thisPokemon.attack;
attackView.editable = NO;
}
贾斯汀, 你可以有几种方式来做到这一点: - 创建一个方法,要么再次启动你的详细视图控制器。初始化时传递PokemonInfo对象。 - 或者只分配一次,只需使用实例方法和值对象。 基本上,您在didLoad中执行的操作将在创建控制器时放置负载。 – Tarun 2012-08-07 18:35:29
感谢您的建议。我有一个使用indexPath启动单元格的方法。我只是改变了方法,以便它也接受来自调用者的关键字来标识它是哪个表,以便它可以在viewDidLoad方法中显示适当的数组。 – apples 2012-08-07 18:53:09