取消Segue Xcode 10 swift,导航控制器不起作用

时间:2019-01-04 18:07:26

标签: uinavigationcontroller unwind-segue xcode10beta6

我一直在互联网上寻求答案并按照Apple文档中的步骤进行操作,但无济于事。 我有两个视图控制器。一个包含一个收藏夹项目的列表(FavouriteTableViewController),另一个包含添加到收藏夹列表的项目的详细信息(ExplorationDetailViewController)。

我在ExplorationDetailViewController的导航栏上(从导航控制器场景开始)有一个保存按钮,我想单击它以启动展开序列。我已经执行了以下步骤,但是当我单击保存按钮时,它完全没有响应。我包括了最相关的代码。

我已经在ExplorationResultViewController中创建了prepareforsegue函数,从那里我将图像数据和标签的数据传递到另一个ViewController中,作为展开任务的一部分

class ExplorationResultViewController: UIViewController {
    var exploration_result: Favourites?
    @IBOutlet weak var ExplorationLabel: UILabel!
    @IBOutlet weak var ExplorationPhoto: UIImageView!

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

        // Pass the selected object to the new view controller.
        super.prepare(for: segue, sender: sender)


        let photo = ExplorationPhoto.image
        let name = ExplorationLabel.text ?? ""

        exploration_result = Favourites(name: name, photo: photo)
    }

然后在FavouriteTableViewController中,我添加了一个unwindtoHere方法,该方法将图像和标签添加到列表中。

class FavouritesTableViewController: UITableViewController {

    // MARK: Properties
    var favourites = [Favourites]()

    // MARK: Actions
    @IBAction func unwindToFavouriteList(sender: UIStoryboardSegue) {
        if let sourceViewController = sender.source as? ExplorationResultViewController, let favourite = sourceViewController.exploration_result{
            // Add a new meal.
            let newIndexPath = IndexPath(row: favourites.count, section: 0)
            favourites.append(favourite)
            tableView.insertRows(at: [newIndexPath], with: .automatic)

        }

然后进入我的情节提要,我控制并拖动ExplorationDetailViewController中的“保存”按钮,并将其连接到场景顶部的退出项。我的展开方法在弹出窗口中显示为:“ unwindToFavouriteListWithSender”。我选择这个。

我现在应该很好,但是当我运行模拟器并单击“保存”按钮时,它绝对没有响应。参见StoryBoard Design 请帮助

1 个答案:

答案 0 :(得分:1)

根据您的评论,我猜测问题是在按下“保存”按钮时,视图控制器层次结构中没有FavouritesTableViewController。您不能展开到尚未 的内容:“展开”意味着返回回到早先实例化的内容 em>并保持在视图控制器层次结构中当前视图控制器上方。

例如,假设我们有

UINavigationController -> (root view controller) -> FavouritesTableViewController
    -> (push) ExplorationResultViewController

现在,我们可以从Exploration控制器退回到“ Favorites”控制器,因为“ Favorites”控制器已经在“ Exploration”控制器之前的层次结构中。听起来好像您欣赏这个事实。