Как правильно использовать 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];
}
}