То, что вы делаете, очень неправильно (кроме вашей первоначальной проблемы).Почему вы создаете экземпляр каждого контроллера представления, а затем используете только тот, который основан на текущем «выборе ячеек»?Это замедлит работу вашего приложения в зависимости от того, сколько времени потребуется для загрузки каждого из этих отдельных представлений.Вам следует только создать экземпляр соответствующего контроллера представления внутри блока "if (indexPath.row == 2) {".
Кроме этого, в вашем подходе много неправильного.То, что вы делаете, никогда не сработает, поскольку создание экземпляра универсального UITableViewController (даже если вы указали свой собственный кончик), очевидно, покажет вам только пустое представление.У вас должен быть собственный класс, к которому привязывается перо в качестве делегата, который затем будет снабжать TableView данными.
Я полагаю, что когда вы создали эти файлы перьев (например, «Изображения»), xcode также предоставит вам файлы «PicturesViewController.h и PicturesViewController.m»? Если это так, вам нужно написать соответствующий код и убедиться, чтодля просмотра таблицы в файле пера «Pictures» для источника данных и делегата установлено значение «PicturesViewController». Затем, когда вы хотите показать это представление, сделайте это вместо:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == 1) {
...
} else if (indexPath.row == 2) {
PicturesViewController *myPictures = [[PicturesViewController alloc] initWithNibName:@"Pictures" bundle:nil];
[self.navigationController pushViewController:myPictures animated:YES];
[myPictures release];
}
}