Я бы каждый раз создавал новый контроллер представления вместо того, чтобы использовать один и тот же и просто изменяя его свойства, больше как в примере, который вы закомментировали в tableView: didSelectRowAtIndexPath :.Это будет работать только в том случае, если вы не обращаетесь к контроллеру из других мест, кроме этих методов.
Первое: удалите bookDetailViewController.title = [NSString stringWithFormat:@"%@" , [breakdownArray objectAtIndex:row]];
из вашего tableView: cellForRowAtIndexPath: метод (вы должны сделать это в любом случае, так как он простобольше процессорного времени)
Второе: удалите свойство bookDetailController из вашего класса.Вам это больше не понадобится.
Третье: реализовать tableView: didSelectRowAtIndexPath: следующим образом:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)path {
BookDetailViewController *bookDetailViewController = [[BookDetailViewController alloc] initWithNibName:@"BookDetailView" bundle:nil];
NSInteger row = path.row;
bookDetailViewController.title = [NSString stringWithFormat:@"%@" , [breakdownArray objectAtIndex:row]];
//Any other setup on view controller
Books2010AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[delegate.breakdownNavController pushViewController:bookDetailViewController animated:YES];
[bookDetailViewController release];
}