2016-01-18 2 views
2

У меня возникли проблемы с передачей данных с контроллера подробного представления на главный. Иерархия заинтересованных частейКак запрограммировать возврат из диспетчера подробных представлений в контроллер главного представления?

TabBarController -> Profile View Controller --segue--> Navigation Controller -> Detail View Controller 

Detail View Controller содержит UICollectionView изображений, каждое изображение, имеющее водопроводная жест распознаватель. То, что я пытаюсь сделать, - это нажать на одно из изображений, передать indexPath.row в ProfileViewController и ПОИСК НАЗАД программно.

Когда я перехожу к контроллеру подробного просмотра, есть кнопка «Назад», поэтому идея: если пользователь нажимает кнопку «Назад», ничего не происходит. Если пользователь нажимает на изображение, кнопка возврата запускается сама по себе, и изображение в профиле изменяется.

До сих пор я могу нажать на изображения, передать indexPath.row, но я не могу вернуться к предыдущему контроллеру View.

Я попытался navigationController?.popViewControllerAnimated(true) и navigationController?.popToRootViewControllerAnimated(true) , но оба они не работают (я их в функцию крана для жеста и ничего не происходит по отношению к navigationController, функция крана работает отлично)

Когда я печатаю следующее, я получаю 1 navigationController.viewControllers.count

Единственное, что мне удалось получить, это dismissViewControllerAnimated, однако это выходит из TabBarController в другое представление, которое есть до этого.

ответ

0

Просьба сделать свойство с сильным атрибутом NSIndexPath как в контроллере вида Profile View Controller, так и Detail View Controller. Кроме того, передать ссылку этого объекта в prepareForSegue от контроллера представления имени Profile View Controller как код ниже:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    // Make sure your segue name in storyboard is the same as this line 
    if ([[segue identifier] isEqualToString:@"YOUR_SEGUE_NAME_HERE"]) 
    { 
     // Get reference to the destination view controller 
     Detail_View_Controller *vc = [segue destinationViewController]; 

     // Pass any objects to the view controller here, like... 
     [vc setMyIndexPath:self.object_indexPath]; 
    } 
} 

В Detail_View_Controller, при нажатии на кнопку назад, пожалуйста, обновите ваш выбранный индекс в той же собственности с созданием одного IBAction, который был передается с предыдущего контроллера.

Я получил ссылку от here.

+0

@ korat-prashant У меня уже есть что-то, что делает это, однако я бы хотел использовать что-то родное для возвращения без использования segue. Я пробовал расслабиться, но не было никаких действий. –

1

UPDATE

Я понял это, он не имел ничего общего с этим программным путем, правильный ответ должен был использовать navigationController?.popViewControllerAnimated(true) однако мой взгляд Иерархия была неправильно

TabBarController -> Navigation Controller -> Profile View Controller --segue-> Detail View Controller 

Теперь работает отлично