Только не выпускайте NSDictionary или любой из ваших источников данных.
В didSelectRowAtIndexPath: метод вы лениво создаете экземпляр вашего UIViewController, содержащий ваш UIImageView (или все, что вы хотите отобразить) и устанавливаете свойство изображения вашего подпредставления с желаемым изображением.
Делая это, вы просто сохраняете одно подпредставление и просто меняете изображение в этом подпредставлении.
Я надеюсь, что ответил на ваш вопрос :) (хотя я не уверен на 100%)
РЕДАКТИРОВАТЬ: Добавлен код для иллюстрации
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{if(!subview){UIViewController *subview=[[UIViewController alloc]init];
subview.delegate=self;}
subview.image=[UIImage ...];
...
}