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