Создание нового экземпляра того же представления с использованием UINavigationController - PullRequest
0 голосов
/ 28 июня 2011

В данный момент я пытаюсь создать новый экземпляр того же представления - используя следующий код:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{       
    InventoryController *inventoryController = [[InventoryController alloc] initWithNibName:@"InventoryView" bundle:nil];

    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:self];
    [navigationController pushViewController:inventoryController animated:YES];

    [inventoryController release];
    [navigationController release];
}

Проблема в том, что он не работает ...

Я не знаюЯ не получаю никаких ошибок или чего-то еще - он просто ничего не делает.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 28 июня 2011

@ У PengOne все в порядке ... вы создаете контроллер навигации, а затем освобождаете его, и ничто не может помешать его освобождению. Кроме того, вы не добавили представление контроллера Nav в окно, и вы не установили контроллер Nav в качестве корневого контроллера представления окна, поэтому нет возможности для представлений, контролируемых контроллерами в этом конкретном стеке навигации, когда-либо отображаться. .

Попробуйте: создайте навигационный проект в XCode. Вам не нужно добавлять какой-либо код - просто создайте проект, чтобы вы могли посмотреть на предоставленный код. Вы увидите, что у делегата приложения есть свойство retain для хранения контроллера nav, а контроллер nav установлен как корневой контроллер окна.

1 голос
/ 28 июня 2011

Если ваш текущий контроллер уже является частью иерархии UINavigationController, вы не должны создавать новый контроллер навигации - используйте вместо него существующий (обратите внимание, что каждый UIViewController имеет ссылку на свой родительский UINavigationViewController, если он существует):

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{       
    InventoryController *inventoryController = [[InventoryController alloc] initWithNibName:@"InventoryView" bundle:nil];

    [self.navigationController pushViewController:inventoryController animated:YES];

    [inventoryController release];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...