Как правильно использовать segue с Tab Bar Controller?

Мое приложение использует другую основную деталь, она состоит из начального ViewController с tableView, но когда пользователь нажимает кнопку "Добавить" в контроллере навигации, мне нужно отправить объект, используя следующую функцию:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"AddDGV"]) {
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:indexPath];
        [[segue destinationViewController] setDetailView:object];
    }
}

Код работает нормально, когда в качестве места назначения используется другой ViewController, но мое приложение было разработано так, чтобы TabBarController имел вместо ViewController. Эта вкладка имеет 2 вкладки, каждая из которых имеет свой контроллер навигации, и первая является целью идентификатора "AddDGV". Я создал файлы.m/.h и связал класс в раскадровке и установил переменную экземпляра "DetailView" в качестве идентификатора.

@property (strong, nonatomic) id detailItem;

Проблема в том, что компилятор не знает эту переменную, потому что команда [segue destinationViewController] содержит контроллер представления, содержимое которого должно отображаться в конце перехода. Поскольку конец перехода - TabBarController, функция не работает.

Кто-то знает, как это исправить???

1 ответ

Решение

Typecast вывод

[segue destinationViewController]

следующее

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"AddDGV"]) {
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:indexPath];
        [(YourDestinationViewController *)[segue destinationViewController] setDetailView:object];
    }
}
Другие вопросы по тегам