Как обновить detailViewController.detailItem из многоуровневой навигации в rootViewController - PullRequest
2 голосов
/ 26 января 2011

это мой первый пост, поэтому, пожалуйста, будьте осторожны.

Я использую базовое приложение на основе Split View в xcode, но отредактировал его так, чтобы rootViewController не просто обновлял detailViewController, а вместо этого выдвигалновый UITableViewController (taskViewController) в стек навигации.

Моя проблема заключается в том, что ничего не происходит, когда я теперь вызываю следующее из моего taskViewController:

detailViewController.detailItem = [NSString stringWithFormat:@"Row %d", indexPath.row];

Если я вызываю это из rootViewController,вместо того, чтобы помещать новый UITableView в стек, он работает.

Вот мой код из rootViewController при выборе ячейки:

- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    TaskViewController *taskViewController = [[TaskViewController alloc] init];

    taskViewController.title = [NSString stringWithFormat:@"Unit %d",indexPath.row];

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

    [taskViewController release];
}

Я что-то здесь не так сделал?Правильно ли я использую контроллер навигации в rootViewController UISplitViewController?

1 Ответ

5 голосов
/ 27 января 2011

Ваш rootViewController может обращаться к detailViewController, потому что он имеет ссылку на него.если вы поместите новый контроллер в стек навигации, то его не автоматически будет знать о DetailViewController.

У вас есть NSLog 'd detailViewController в вашем taskVC, чтобы увидеть, если онимеет указатель?

Обычно вы устанавливаете это, когда создаете его так:

 - (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        TaskViewController *taskViewController = [[TaskViewController alloc] init];

        taskViewController.title = [NSString stringWithFormat:@"Unit %d",indexPath.row];

        taskViewController.detailViewController = self.detailViewController;

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

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