Xcode重用多个表视图的详细信息视图

时间:2012-08-07 18:21:18

标签: iphone xcode uitableview didselectrowatindexpath

我有多个显示不同项目的表格视图。虽然每个单元格的详细视图应具有相同的布局。我想为每个表的所有单元格使用相同的详细信息视图,而不必为每个表实现不同的详细视图类,因为它几乎是相同的代码。我该怎么做?

以下方法位于其中一个表视图中。这将显示选择单元格时的详细信息视图:

-(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];
}

以下是Detail视图类中的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;
}

1 个答案:

答案 0 :(得分:0)

创建视图并将其放在笔尖中。在视图中为每个元素指定唯一标记。当您需要使用nib(UINib)实例化视图时,如果要使用" viewWithTag"来填充它,请访问每个元素。假设您正在回收单元格,则始终使用适当的数据设置任意视图元素。

如上所述,更传统的方法是在nib中实例化一个单元格,然后执行相同的操作 - 您要访问的每个元素都有一个唯一的标记。