我在将数据从细节视图控制器传递到主视图控制器时遇到了麻烦。
TabBarController -> Profile View Controller --segue--> Navigation Controller -> Detail View Controller
细节视图控制器包含一个图像的UICollectionView,每个图像都有一个点击手势识别器。我尝试做的是点击其中一个图像,将indexPath.row传递给ProfileViewController,然后以编程方式返回。
当我转到详细视图控制器时,那里已经有一个“后退”按钮,所以我的想法是:如果用户按下“返回”按钮,则不会发生任何事情。2如果用户按下图像,则返回按钮会自动触发,并且配置文件中的图像会发生变化。
到目前为止,我可以点击图像,传递indexPath.row,但我无法设法回到以前的视图控制器。
我已经尝试了navigationController?.popViewControllerAnimated(true)
和navigationController?.popToRootViewControllerAnimated(true)
,但它们都不起作用(我将它们放入手势的tap函数中,但navigationController没有任何React,tap函数工作正常)
当我打印以下内容时,我得到1 navigationController.viewControllers.count
我唯一设法工作的是dismissViewControllerAnimated
,但是它从TabBarController转到了之前的另一个视图。
2条答案
按热度按时间5w9g7ksd1#
更新
我想明白了,这与编程无关,正确答案是使用
navigationController?.popViewControllerAnimated(true)
,但我的视图层次结构是错误的现在它工作正常
aiazj4mn2#
请在视图控制器
Profile View Controller
和Detail View Controller
中创建具有NSIndexPath的strong特性的属性。另外,从名为Profile View Controller
的视图控制器传递prepareForSegue
中该对象的引用,如以下代码所示:在Detail_View_Controller中,当您点击“后退”按钮时,请通过创建一个IBAction(从上一个视图控制器传递)更新同一属性中的选定索引。
我从here中获取了引用。